String是引用類型,String類中的內容一旦聲明則不可改變,它是Java中共享模式一種應用。
String有兩種賦值方式:
1 直接賦值 String str=”abc”; 句柄指向新開辟的內存空間
2 用new開辟空間 String str=new String(”abc”); “

來看下面代碼:
public class Demo {
public static void main(String[] args) {
String s=new String("abc");
String s1="abc";
String s2="abc";
System.out.println(s==s1);
System.out.println(s1==s2);
}
}
運行結果為:
原因:==比較的是他們在堆內存中的地址,s和s1的地址不同,所以輸出false。
第二個輸出true,是因為String為共享模式的一種應用,String pool中內容相同則直接指向,不會重新開辟內存空間。