java中String初始化的兩種方式

     字符串可能是任何程序語言中都會出現的對象,java中創建並初始化一個String對象,最常見的方式有兩種: 
String str=new String("XXX"); 
String str="XXX";    

      二者看似相同,其實有很大的差別。 
      前者是java中標準的對象創建方式,其創建的對象將直接放置到堆中,每調用一次就會創建一個新的對象;後者則會在棧中創建一個對象引用變量str,然後查看棧中是否存在"XXX",如果沒有,則將"XXX"存放進棧,並令引用變量str指向它;如果已經有"XXX",則直接令str指向它。這樣充分利用了棧的數據共享優點,當然也可能是一個陷阱,對象很有可能沒有創建,只不過指向一個先前已經創建的對象;而new()方法則能保證每次都創建一個新的對象。 
      下述代碼展示了二者的不同:


輸出結果: 
true 
false


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