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();

 

posted @ 2017-10-21 02:14  bruce.chen  阅读(134)  评论(0)    收藏  举报