這里用到了JUnit,用來測試String pool。
第一個測試,說明兩個String是同一個Object,(==就是用來比較object的reference)。而第二個測試則說明兩個String Object不同。
眾所周知,Java的String是不可改變的字符串對象。為了提高效率,Java為String類提供了串池(String pool)。正如大家所看到的那樣,在第一個test中就使用了串池。當你重新聲明一個String型變量為abc時,將使用串池里原來的那個abc,而不重新分配內存,也就是說,string2與string1將會指向同一塊內存。所以結果為true。在第二個test case中使用了普通對象的聲明方式,系統將會為string1和string2各分配一塊內存。所以結果為false。
結論:我們比較兩個String的值,最好用equals()方法,而最好不要使用==。這就避免了一些不必要的麻煩。另外,聲明String的時候,最好用=,這樣就可以體現String pool的作用了。
Powered by: BlogJava Copyright © Java求索