8:正则表达式及stringbuffer

前端之家收集整理的这篇文章主要介绍了8:正则表达式及stringbuffer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


正则表达式: 负责的字符串匹配处理规则,应用广泛.
学习建议: 1 要能够读懂"正则表达式"
2 能够写出简单的"正则表达式"
3 不要过多的分配学习时间!
可以应用于: java grep vi
1 字符集: [1234] 表示 1,2,3,4 之一
[^12] 表示除了 1,2
[1-5] 表示 1,4,5
[a-f] 表示 a-f 之间的
[0-9a-fA-F] 表示:一个16进制字符
预定义字符集:
\d : [0-9]
. : 任意字符
\w: 单词字符 [0-9a-zA-Z_]
\s: 匹配空白:

2 {m,n} 数词
{n}
{m,n}
? : {0,1}
+ : {1,}
* : {0,}

3 ^ 开头
$ 结尾

邮政编码: ^[0-9][0-9][0-9][0-9][0-9][0-9]$
^[0-9]{6}$
^\d{6}$

用户名规则: ^\w{8,10}$
电话号: +86 13912345678
^(\+86)?\s?\d{11}$
身份证号码: ^\d{15}(\d{2}[0-9xX])?$
一个点的坐标: ^\d+(,\s*|\s+)\d+$
3,2
3,2
3 2
3 2

日期: 2011-01-30

String 对正则表达式的支持
.matches() 匹配正则表达式
.split("[,\s\|]") 切分字符串为字符串数组
.replaceAll()

案例:
编写方法,实现从控制台读取点坐标,并且解析返回Point对象
如果用户输入格式错误就重新输入.
提示:
使用 matches() 验证坐标规则
使用 split() 切分坐标
解析整数使用:Integer.parseInt(String str) -> int

StringBuffer 和 StringBuilder
1 StringBuilder 是变长字符序列
2 StringBuilder 方法:append,insert ... 都返回
当前 StringBuilder 对象本身的引用。
3 如果软件需要大量字符串处理时候建议使用StringBuilder
4 String s = s1+s2; Java实际上才是如下代码运行:
String s = new StringBuilder(s1)
.append(s2).toString();

String s = s1+s2+s3+s4; 被优化为
String s = new StringBuilder(s1)
.append(s2).append(s3).append(s4).toString();

s+="a";//会产生两个新对象(StringBuilder,String)
s+="a";//会产生两个新对象
StringBuilder buf=new StringBuilder();
buf.append("a");
buf.append("a");

5 StringBuffer 和 StringBuilder API几乎一样!
StringBuffer 是java早期提供的,速度稍慢,线程安全
StringBuilder 是Java5 以后提供的,速度快,非线程安全

java中的包装类
1 包装类可以把基本类型包装为对象类型
2 有八种包装类
int Integer
long Long
byte Byte
short Short
float Float
double Double
boolean Boolean
char Character
3 包装类提供了 对应数据类型的工具方法
Integer.toHexString()
Integer.toString(int)
Integer.toBinaryString()
Integer.parstInt(String)
"3f"->int
Integer.parstInt(String,int)

"2.718" -> 2.718
Double.parseDouble(String str);

自动包装(auto Boxing / unBoxing)(java5 以后可以):
Integer i = 2;// i=new Integer(2);
Object o = 3.5;
System.out.println(o instanceof Double); //true
int a = i+1;// a = i.intValue() + 1;

注意
1 包装类是final的类
2 包装类对象是不变的,与字符串类似(不变模式)
Integer a = 1;
Integer b = 2;
Integer c = a+b;
3 包装类覆盖了 toString equals hashCode

//案例: 控制台输入一串字符串 // 转义输出为\uxxxx 的形式,英文不处理 // 如: "A中" -> "A\u4e2d" 要求包装方法: 输入为原始字符串,返回转义字符串

猜你在找的正则表达式相关文章