簡體   English   中英

Java中的字符串常量池中的對象

[英]objects in String constant pool in java

public class NewClass {

    public String makinStrings() {
        String s = "Fred";
        s = s + "47";
        s = s.substring(2, 5);
        s = s.toUpperCase();
        return s.toString();
    }
}

在上面的程序中創建了多少個對象? 轉換為大寫字符串后,我看到有4個對象,但是根據scjp書,答案是3個。 我不明白為什么只有三個對象

  1. s = "Fred"
  2. s = s+47; => s = Fred47
  3. s = s.substring(2,5); => s = ed4
  4. s = s.toUpperCase(); => s = ED4

是3個對象

    String s = "Fred";             // created in pool
    s = s + "47";                  // created in heap
    s = s.substring(2, 5);         // created in heap
    s = s.toUpperCase();           // created in heap

如果看到substring()toUpperCase()的源,它將返回一個新字符串,並帶有s + "47"; 由於s的值是在運行時確定的,因此它將創建新的字符串,因此共有3個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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