1. 程式人生 > >String和New String()的區別

String和New String()的區別

面試中常常會被問到這樣的問題,為此也搜尋閱讀過很多文章,看完之後還是不太明白。

所以希望以個人的見解在此做個總結,為大家提供另外一種理解方式,如有不對之處還請諸位留言!

String str ="test";

String str2 =new String ("test");

String str ="test";先在常量池中查詢有沒有"test" 這個物件,如果有,就讓str指向那個"test".如果沒有,就讓str指向在常量池中新建的物件"test"。

String str2 =new String ("test");是在堆中建立的物件"test" ,在棧中建立堆中"test" 物件的記憶體地址。

無法理解的看圖吧:


之前的寫法有錯誤,誤導大家不好意思哦!

在棧中的區域性變量表只包括基本型別(boolean、byte、char、short、int、float、long、double)沒有String

以下為相等的in1==in2 都存放在棧中!

int in1 = new Integer(1);
int in2 = 1;