假如沒有string pool這樣的機制,遇到string就建立一個物件,這樣記憶體就很快就會爆掉了。
在java中採取Flyweight pattern作法,可以共享同樣的string object。
建立string object有兩種方式:
- String string = “Cat”;
- String string = new String(“Cat”);
採用第一種方法,會先檢查string pool是否有相同的string。若有就共用,沒有則建立之。
採用第二種方法﹐不會使用到string pool機制,而是在heap建立一個新的string object。若之後想要使用string pool機制,可以使用intern。
範例:
1 | public class StringExample { |
結果:1
2
3
4s1 == s2 ?true
s1 == s3 ?false
s1 == s3.intern() ?true
s1 equals s3 ?true