参考答案
1. 可变与不可变
- string对象是不可变的,String类中使用字符数组保存字符串,有“final”修饰符。以下参考:
private final char value[];
- StringBuilder与StringBuffer都代表可变的字符序,两者非常相似,都继承自AbstractStringBuilder类,而且方法也一样。以下参考:
char[] value;
2. 多线程安全
- String中的对象是不可变的,可以理解为常量,是线程安全的。
- StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,是线程安全的。
- StringBuilder并没有对方法进行加同步锁,是非线程安全的。
实例参考:
public synchronized StringBuffer reverse() { super.reverse(); return this; } public int indexOf(String str) { return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法 }
以上,是Java面试题【Java String、StringBuffer和StringBuilder的区别】的参考答案。
输出,是最好的学习方法。
立即行动,在评论区记录下你的问题、笔记或补充~
—end—