1.String值是不是可变的?为什么不可变?
不可变,只要创建出来它的值就被放在底层final所修饰的char[] value数组里
2.String,StringBuilder,StringBuffer区别?
(1)String使用final修饰,表示最终类,不可继承和修改,线程安全;
(2)而StringBuilder和StringBuffer都是可修改对象,
StringBuffer使用synchronized同步修饰方法,线程安全,StringBuilder非线程安全;
线程不安全的类绝对不能充当成员变量
3.字符串的比较例如为什么一定要用String的equals()方法比较?
String重写了Objects.equals()方法,而StringBuilder和StringBuffer没有
String str1 = "level";
StringBuilder str2 = new StringBuilder();
str2.append("level");
//
//str2.toString()将Str2转换成String类型
boolean flag1 = str1.equals(str2.toString());//true
//str2调用父类Objects.equals()方法,使用==去比较
boolean flag2 = str2.equals(str1);//false
4.