[英]Why are the results of of str == str.intern() for these strings different?
[英]Why are the results of of str == str.intern() for StringBuilder using append or not different?
All.I有一個像這樣的java代碼片段:
String a = new StringBuilder("app").append("le").toString();
System.out.println(a.intern() == a);
String b = new StringBuilder("orange").toString();
System.out.println(b.intern() == b);
這個java代碼將輸出true,false。 我想知道為什么。 謝謝大家。
在這兩種情況下, StringBuilder.toString()
都會創建一個新字符串。
在第一種情況下, String.intern()
發現實習池中沒有字符串“apple”,因此將提供的字符串添加到池中並返回相同的引用 - 這就是它打印為true
。
在第二種情況下, String.intern()
發現實習池中已經有一個字符串“orange”,因此返回對它的引用 - 這是對b
的不同引用,因此它打印為false
。
請注意,如果您在此代碼開頭之前有一行:
System.out.println("apple");
那么你也會因為同樣的原因從第一次比較中看到false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.