StringBuilder和StringBuffer
String字符串:是通过数组实现的,是final的每次用+号拼字符串是不可扩展,每次只能创建新的
StringBuilder:不是final的,可扩展,做字符串拼接用,使用append方法
StringBuffer:跟StringBuilder的方法一样,也是拼接字符串的
总结:
1.string :有很多构造方法
2.拼接字符串以后用StringBuilder和StringBuffer
3.StringBuffer每个方法都有synchronized关键字
4.StringBuffer是线程安全的,当很多地方(多个方法)需要做拼接用
5.StringBuilder是线程非安全的,在方法内拼接用
String常用方法
charAt(索引值):根据索引找字符串
length():返回字符串长度
concat():两个字符串拼接
contains():判断字符串是否存在
endsWith():判断以什么结尾
startsWith():判断以什么开头
equals():比较字符串是否相等
equalsIgnoreCase():比较字符串是否相等(忽略大小写)
getBytes():将字符串转换为Byte类型数组
indexOf():
1.根据字符串找到在用char数组组成字符串的最近一次索引值(可以填char对应的数字,例如a:97)
2.可以规定索引开始位置
isEmpty():判断字符串是否为空
lastIndexOf():返回最后一次出现的索引位置
matches():判断字符串是否满足正则表达式
\d表示数字
匹配1开头第二位范围为3-9后九位是数字
replace(a,c):将a替换为c返回一个新的字符串,旧的不变
replaceAll(正则,a):
split(正则,分割次数):以输入的分割词分割返回一个数组
substring(开始索引,结束索引)截取
toCharArray(Char数组):字符串转为Char数组
upUpperCase()转为大写
toLowerCase()转为小写
trim()替换字符前尾的空格,中间不替换
valueOf()将基本数据类型转为字符串,静态的通过类调用
toString方法
在Object下默认在打印时就会调用
方法总结
1、trim()去掉头尾空格
2、split()分割
3、replace()替换
4、subString()截取
5、equals()判断是相等
6、indexOf根据值返回索引
7、length()获取长度
8、startswith()判断以什么开头
9、endswith()判断以什么结尾
10、isEmpty()判断是否为空
11、toUpperCase()转大小
12、toLowerCase()转小写
13、CharAt()根据索引返回值
14、contains()判断是否包含
15、getBytes()把字符串转成bytes数组
16、toCharArray()把字符串转成char数组
17、lastIndexOf()返回最后出现的索引
静态方法:
valueof()把值转成字符串
字符串定义后会存在字符串常量池中
常见字符串问题
S12指向堆,new StringBuilder拼接的abcdef也在堆中