String_面试题
String str1 = "hello";
String str2 = "he" + "llo";
System.out.println(str1 == str2);
答案:true
解析: "he"和“llo”都可以在编译期可以确定,指向常量池中的字符串。
-------------------------------------------------------------------------------------------------------------
String str1 = "hello";
String str2 = "he" + new String("llo");
System.out.println(str1 == str2);
答案:false
解析:运行时才可以确定,值向堆内存的字符串,用StringBuilder实现拼接。
------------------------------------------------------------------------------------------------------------
String s = null;
s += "abc";
System.out.println(s);
答案:nullabc
解析:
两个字符串str1, str2的拼接首先会调用 String.valueOf(obj),
String.valueOf(Obj)中的实现是return obj == null ? "null" : obj.toString(),然后产生StringBuilder
StringBuilder.append("null").append("abc").toString();
浙公网安备 33010602011771号