1.介绍
由于String的不可更改特性,为了方便字符串的修改,Java中又提供了StringBuilder和Stringbuffer类,这两个类大部分功能是相同的,以下为常用方法:
public static void main(String[] args) {StringBuilder sb1 = new StringBuilder("hello");StringBuilder sb2 = sb1;//追加:即尾插-->字符、字符串、整型数字sb1.append(' ');//hellosb1.append("world");//hello worldsb1.append(123);//hello world123System.out.println(sb1);//hello world123System.out.println(sb1 == sb2);//trueSystem.out.println(sb1.charAt(0));//获取0号位上的字符hSystem.out.println(sb1.length());//获取字符串的有效长度14System.out.println(sb1.capacity());//获取底层数组的总大小sb1.setCharAt(0,'H');//设置任意位置的字符,结果:Hello world123sb1.insert(0,"Hello world!!!");//Hello world!!!Hello world123System.out.println(sb1);//Hello world!!!Hello world123System.out.println(sb1.indexOf("Hello"));//获取Hello第一次出现的位置System.out.println(sb1.lastIndexOf("hello"));//获取hello最后一次出现的位置sb1.deleteCharAt(0);//删除首字符sb1.delete(0,5);//删除[0,5)范围内的字符String str = sb1.substring(0,5);//截取[0,5)区间中的字符以String的方式返回System.out.println(str);sb1.reverse();//字符串逆转str = sb1.toString();//将StringBuffer以String的方式返回System.out.println(str);}
String和StringBuilder最大的区别:String的内容无法修改,而StringBuilder的内容可以修改
tips:String和StringBuilder类不能直接转换,如果想要互相转换,可以采取如下原则:
- String变为StringBuilder:利用StringBuilder的构造方法或append()方法
- StringBuilder变为String:调用toString()方法
2. 面试题
1、String、StringBuffer、StringBuilder的区别
- String的内容不能修改,StringBuffer和StringBuilder的内容可以修改
- StringBuffer和StringBuilder的大部分功能是相似的
- StringBuffer采用同步处理(多线程),属于线程安全操作;StringBuilder未采用同步处理(单线程),属于线程不安全操作
2、以下总共创建了多少个String对象(不考虑常量池之前是否存在)
String str = new String("ab");String str = new String("a") + new String("b");