正则表达式
字符串的一些排列规则
常用标识
[]:一个字符的位置
数量词:
+: 出现一次或多次
?: 一次或者0次
*****: 0次或者多次
{n}: 刚好n次
{n,m}: n~m次
{n,}: 至少n次
预定义字符类:
.: 所有字符
\\d: 数字 [0-9]
\\s: 空白字符:[ \\t\\n\\x0B\\f\\r]
\\w: 单词字符:[a-zA-Z_0-9]
\\D: 非数字 [ ^0-9 ]
有特殊意义的字符
. \\ + ? * –:表示字符本身, 需要 \\字符
API
matches(String regex)
是否有匹配regex的一段字符串,如果在表达式中有^$,则为整个字符串是否匹配
replaceAll(String regex, String newStr)
将匹配的字符串修改为newStr。
split(String regex)
按照regex分割字符串,输出字符串数组。
StringBuilder
构造方法
StringBuilder sb = new StringBuilder()
StringBuilder sb = new StringBuilder(String)
API
append(Object o)
在字符串末尾追加新的内容
delete(int start, int end)
删除指定下标的字符串
replace(int start, int end, String replacement)
修改下标从start开始到end的字符串为replacement
insert(int index, String str)
在下标处插入str
reverse()
反转字符串。
包装类
就是对基本数据类型做了封装。
byte -> Byte
short -> Short
int -> Integer
long -> Long
double -> Double
float -> Float
char -> Character
boolean -> Boolean
所有的数值的包装类都拥有统一的父类: Number
所有的包装类, 都是 final 类
须知
1.基本数据类型和包装类型之间可以直接转换
2.包装类型比基本数据类型多表示一个null值
3.包装类型除了可以直接赋值, 还可以new对象
4.字符串 可以转换成 包装类型/基本数据类型
Integer/int i = Integer.valueOf(“12”);
5.i1 = i; // 等同于: i1 = Integer.valueOf(i);//自动装箱
i = i1; // 等同于: i = i1.intValue();//自动拆箱
6.整数类型, 类中定义了最大值和最小值字段
7.Integer有常量池:-128~127。
8.Integer.toBinaryString(): 将整数转换成二进制的字符串形式
9.Integer.parseInt(“12a”, 16): 将字符串以16进制方式转换成数字
集合
Collection< E >
API
add(E)
添加元素;
remove(E)
原理: 遍历集合, 将每一个元素.equals(o)
然后移除指定元素;
contains(E)
是否包含指定元素;
isEmpty()
是否为空;
clear()
清空集合;
iterator()
迭代器;
使用:
Iterator it = col.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
it.remove();(移除迭代器迭代的最后一个元素,即当前元素)
}
迭代器的简化:forEach
for(每一次迭代出来的元素临时变量 : 要迭代的集合/数组) {
循环体
}
注意: forEach只能遍历元素使用, 不能迭代移除
addAll(Collection)
添加集合Collection内所有元素;
containsAll(Collection)
是否包含集合Collection内所有元素;
retainAll(Collection)
仅保留集合Collection中存在的元素(交集);
removeAll(Collection)
移除集合Collection中的全部元素;
toArray()
将集合转换为数组。
Object[] toArray():无参,返回值类型永远都是Object[],和泛型无关
T[] toArray(T[]):参数:一个具体类型的数组, 作用只是为了提供类型