簡體   English   中英

為什么使用append或者不同的StringBuilder的str == str.intern()的結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM