1.不可变String
String对象是不可变的。String类中每一个看起来会修改String值的的方法,实际上都创建了一个全新的String对象,以包含修改后的字符串的内容。而最初的String对象则丝毫未动。
String作为方法入参时,实际传递的是引用的一个拷贝。
操作符重载的意思是,当一个操作符在应用于特定的类时,被赋予了特殊的意义(Java不允许程序员重载任何操作符)
2.String的“+”操作符是本质是通过StringBuilder的append方法实现的。
3.打印对象的内存地址,需要调用super.toString();
4.格式化输出:
d | 整数型(十进制) |
c | Unicode字符 |
b | Boolean值 |
s | String |
f | 浮点数(十进制) |
e | 浮点数(科学计数法) |
x | 整数(十六进制) |
h | 散列码(十六进制) |
% | 字符“%” |
5.String.format()格式化字符串
6.正则表达式
字符类
* 任意字符
[abc] 包含a、b和c的任意字符
[^abc] 除了a、b和c之外的任意字符(否定)
[a-zA-Z] 从a-z或者从A-Z的任意字符(范围)
[abc[hij]] 任意a、b、c、h、i和j的字符(合并)
[a-z&&[hij]] 任意h、i和j字符(交)
\s 空白符()
\S 非空白符
\d 数字[0-9]
\D 非数字[0-9]
\w 词字符[a-zA-Z0-9]
\W 非词字符
^ 一行的起始
$ 一行的结束
\b 词的边界
\B 非词的边界
\G 前一个匹配的结果
6.1基础
在Java的正则表达式中\\的意思是,我想在正则表达式中插入一个正则表达式的反斜杠,所以其后面的字符具有特殊的意义。"
\\d 表示一位数字
\\\\表示一个\
+ 一个或多个之前的表达式
-?\\d+ 负数,后面跟着一个或者多个数字
应用表示是最简单的途径,就是运用String内建的功能
"-1234".matches("-?\\d+") //true
"5678"matches("-?\\d+") //true
"+911"matches("-?\\d+") //false
"+911"matches("(-|\\+)?\\d+") //true
String类自带的正则表达式工具:
split() 将字符串从正则表达式匹配的地方切开
replaceFirst() 替换匹配到的第一个
replaceAll()替换匹配到的所有
6.2创建正则表达式
Pattern和Matcher类
String reg = “abc+”;
String str = "abcabcabcdefabc";
Pattern p = Pattern.compile(reg);
Mathcher m = p.matcher(str);
Pattern对象表示编译后的正则对象。
static方法matches(String reg,CharSequence input),用以检查regex是否匹配整个CharSequence类型的input参数
split方法,返回分割后字符串的String数组
Matcher方法
matches()判断整个输入字符串是否匹配正则表达式
lookingAt()判断部分是否匹配
find()用来查找多个匹配,像迭代器那样前向遍历输入字符串
find(i)表示从i处开始查找
组
组是用括号划分的正则表达式,可以根据某个组的编号,来引用某个组。组号0表示整个表示式,组号1表示被第一队括号括起来的组
A(B(C))D
组0 ABCD
组1 BC
组3 C
start()返回先前匹配的起始位置的索引
end()返回所匹配的最后一个字符的索引加一