JAVA--问题总结

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.

posted @ 2022-10-19 14:31  学JAVA的旅行者  阅读(34)  评论(0)    收藏  举报