字⾯量就是123 'a' \"fff\"等如此的直接量。
在创建变量初始化值推荐使⽤字⾯量,因为使⽤字⾯量可以实现复⽤。⽽使⽤new则必定在内存在开辟新的空间。
字⾯量⽰例
String str1 = \"123\";String str2 = \"123\";String str3 = \"12\";str3 = str3 +\"3\";
System.out.println(str1==str2);//⽐较的是地址,此时为true
System.out.println(str1==str3);//false,因为str3指向的不是内存中第⼀个被创建的“123”
new与字符串内容⽐较
使⽤new必然在内存中开辟空间。
String str1 = “123”;
String str2 = new String(\"123\");
System.out.println(str1==str2);//false,因为new开辟了新空间,没有重⽤第⼀个“123”
⼀个重要的⾯试题
String str1 = \"123abc\";String str2 = \"123\"+\"abc\";String str3 = \"123\";
String str4 = str3+\"abc\";
System.out.println(str1==str2);//trueSystem.out.println(str1==str4);//false
第⼀个结果为true,是因为java在编译时,发现它这⾏的“123”与“abc”都是永恒不变的,所以在编译时直接把这⼀⾏(第2⾏)看做String str2= \"123abc\";了,所以它与str1指向的是同⼀个地址。
第⼆个结果为false,因为str4是拼接了⼀个变量,它先开辟⼀个空间,把拼接的变量的值放过来,在拼接上后续的内容,所以str4指向的不是第⼀个“123abc”对象。
因篇幅问题不能全部显示,请点此查看更多更全内容