前言叙述:
1.StringBuilder类不一定需要 是为了避免String频繁拼接修改字符串信息的时候才用的
底层数组是可变的 提高了性能
2.常用方法
与String类不同的独有方法
append() insert() delete() deleteCharAt() reverse()
与String类相同的方法
length() charAt() codePointAt() indexOf() lastIndexOf()
substring() replace()名字相同 用法不一致
不是很常用的方法
ensureCapacity() capacity() setLength() trimToSize(); setCharAt();
3.String家族笔试中经常容易考察的知识点
1.String所属的包 继承关系 实现接口
java.lang 继承Object 接口Serializable,CharSequence,Comparable
2.String构建方式
常量 构造方法
3.String对象内存结构
字符串常量区 new堆内存对象
== equals()区别
"a"+"b"+"c"
4.String不可变特性
长度及内容
5.String中的常用方法---与StringBuilder的区别
concat(); toUpperCase();
6.String和StringBuilder区别 | String和StringBuffer区别
String不可变字符串
JDK1.0
有一个接口Comparable
不可变体现在长度及内容
有一些方法StringBuilder没有 concat compareTo toUpperCase
StringBuilder可变字符串
JDK1.5
有一个接口Appendable
可变字符串 没有final修饰 底层可以进行数组扩容
有一些方法String没有 append() insert() delete() reverse()
7.StringBuffer和StringBuilder的不同
StringBuffer早期版本1.0
StringBuilder后来的版本1.5
早期版本 线程同步
安全性比较高 执行效率相对较低
后期版本 线程非同步 安全性比较低 执行效率相对较高
Regular有规律的 Expression表达式
正则表达式regex
一个带有一定规律的表达式
匹配字符串格式的
正则表达式通常的作用如下:
1.字符串的格式校验
String类中提供的一个方法 boolean = str.matches("regex");
2.字符串的拆分及替换 String类中提供的方法replace split
3.字符串的查找 Pattern模式 Matcher匹配器
如下的所有都用来描述字符的信息
[abc] abc其中的一个
[^abc] 不能是abc其中的一个 其他都可以
[a-zA-Z] 表示必须是这两个范围内的
[a-z&&[^bc]] 表示a-z其中的一个但不能是b和c
| 或者
代表任意一个字符
\d digit数字 [0-9]
\D 非数字 [^0-9]
\s space留白 一个空格 一个回车 一个换行。。。
\S 非留白
\w word单词 [0-9A-Za-z] 数字或字母都可以
\W 非单词 [^0-9A-Za-z]
如下的所有都用来描述字符出现的次数
? 0-1次 [0-9]?
* 0-n次
+ 1-n次
{n} 固定n次
{n,} 至少出现n次
{m,n} m-n次