Java | String類型

1、創建String對象的兩種方式&區別:

方式1:String s1 = "AAA"; "AAA"是字符串,在編譯時期會在常量池中創建一個字符串對象,因此會從常量池中獲取對象;

方式2:String s2 = new String("AAA"); 如果常量池中沒有"AAA"字符串對象,則會創建兩個字符串對象,一個在堆中, 一個在常量池中。

注意: System.out.println(str1==str2);   //  false

2、String類型的常量池比較特殊,主要如下:

直接使用雙引號生命出來的字符串對象會直接存儲在常量池中,如s1;

如果不是,例如s2,則可以使用String提供的intern()方法,該方法爲Native方法,作用如下:

如果運行時常量池中已經包含一個等於此String對象內容的字符串,則返回常量池中該字符串的引用;

如果沒有,則首先在常量池中創建與此String內容相同的字符串,並返回常量池中創建的字符串的引用;
 

String s1 = new String("AAA");
String s2 = s1.intern();
String s3 = "AAA";
System.out.println(s2);//AAA
System.out.println(s1 == s2);//false,因爲一個是堆內存中的String對象,一個是常量池中的String對象,
System.out.println(s2 == s3);//true, s2,s3指向常量池中的AAA


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章