String、StringBuffer、Stringbuilder 区别 以及常用方法
| 是否可变 | 线程安全 | 效率 | 使用场景 | |
| String | 不可变(存放在常量池) |
线程安全 (因为存放在常量池,是不可变的只读) |
最差 | 少量字符串操作 |
| StringBuffer | 可变(实际存储是在一个字符数组,指向这个数组的引用不可变,但是内容可变) | 线程安全 | 效率较高(增删) | 多线程操作多 |
| StringBuilder | 可变(实际存储是在一个字符数组,指向这个数组的引用不可变,但是内容可变) | 线程不安全 | 效率最高 | 单线程操作多 |
1、String转StringBuffer(StringBuilder):
(1)String对象直接传入StringBuffer构造器(StringBuffer stringBuffer = new StringBuffer(str))
(2)使用StringBuffer的append方法(stringBuffer1 = stringBuffer1.append(str);)
2、StringBuffer(StringBuilder)转String:
(2)使用StringBuffer的append方法(stringBuffer1 = stringBuffer1.append(str);)
2、StringBuffer(StringBuilder)转String:
(1)StringBuffer对象直接传入String构造器(String s1 = new String(stringBuffer3))
(2)调用StringBuffer的toString方法(String s = stringBuffer3.toString()
String常用的方法:
(2)调用StringBuffer的toString方法(String s = stringBuffer3.toString()
String常用的方法:
| str.equals(str1) | 比较内容是否相同,区分大小写 |
| str.equalsIgnoreCase(str1) | 忽略大小写的判断内容是否相等 |
| str.length | 获取字符的个数,字符串的长度 |
| str.indexOf | 获取字符在字符串对象中第一次出现的索引,索引从0 开始,如果找不到,返回-1 |
| str.lastIndexOf | 获取字符在字符串中最后一次出现的索引,索引从0 开始,如果找不到,返回-1 |
| str.substring | 截取指定范围的子串(传一个参数是截取参数后的,传两个截取两个之间的) |
| str.toUpperCase/str.toLowerCase | 转换成大写/转换成小写 |
| str.replace | 替换字符串中的字符(原始的不变 返回一个新的)区别StringBuffer的方法 |
| str.toCharArray | 转换成字符数组 |
| str.compareTo(str1) | 比较两个字符串的大小 |
StringBuffer/StringBuilder常用的方法:
| s.append() | 追加字符串(String、StringBuffer这些对象都可) |
| s.delete(start,end) | 删除索引为>=start && <end 处的字符 |
| s.replace(start, end, str1) | 替换索引为>=start && <end 处的字符为str1 |
| s.indexOf(str) | 查找指定的子串在字符串第一次出现的索引,如果找不到返回-1 |
| s.insert(index,str) | 在索引为index的位置插入str,原来索引为index的内容自动后移 |
| s.length() | 获取字符串长度 |
浙公网安备 33010602011771号