顾乔芝士网

持续更新的前后端开发技术栈

JAVA大厂面试题——String、StringBuffer 和 StringBuilder

一、类型

String是只读字符串,它不是基本数据类型,是一个对象,是一个final类型的字符数组,所引用的字符串不能被改变,定义后,无法在增删改,而StringBuffffer和 StringBuilder底层都是一个可变是的字符数组,所以在进行频繁的字符串操作时,建议使用StringBuffffer和 StringBuilder来进行操作。

二、+ 操作

String:

String可以通过本身自带的concat();方法来进行 + 操作,也可以直接使用 + 操作构建一个新的对象来完成。

String s = "123"; 
System.out.println(s);//123 
String s1 = s.concat("11"); 
System.out.println(s1);//12311 
String s2 = s + "12"; 
System.out.println(s2);//12312

StringBuffer:

StringBuffer stringBuffer = new StringBuffer("123"); 
System.out.println(stringBuffer);//123 
StringBuffer stringBuffer1 = stringBuffer.append("22"); 
System.out.println(stringBuffer1);//12322


StringBuilder:

StringBuilder stringBuilder = new StringBuilder("123"); 
System.out.println(stringBuilder);//123 
StringBuilder stringBuilder1 = stringBuilder.append("33"); 
System.out.println(stringBuilder1);//12333


StringBuffffer和 StringBuilder都继承了AbstractStringBuilder抽象类,所以进行每次+操作,隐式在堆上new了一个跟原字符串相同的StringBuilder对象,再调用append方法 拼接+后面的字符。

三、线程


另外StringBuffffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非常安全的

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言