【问题标题】:What is the value stored in new object when created?创建新对象时存储在新对象中的值是多少?
【发布时间】:2017-06-16 18:00:50
【问题描述】:

当我们使用时:

String s = new String("abc");

创建一个String 对象。

s 将存储在堆栈中并引用新对象,并且将在堆中创建一个新对象,而文字将在字符串常量池中。

现在的问题是,新对象的值是多少?它会引用字符串池常量中“abc”的内存还是将“abc”作为值?

【问题讨论】:

  • 我不太清楚你在问什么。您是在问s 是否会引用常量池中的对象?
  • 您能详细说明一下吗?
  • @Yohannes 只是想问一下由 new 运算符创建的对象是指向文字 abc 还是将 abc 作为其值。
  • @JonSkeet 我只是想知道新字符串将保存什么,它是存储在字符串常量池中的文字的内存地址,还是它本身带有值 abc。
  • 但是你所说的“携带值abc”是什么意思?您需要非常准确地了解您的问题,否则我们无法真正回答。

标签: java string object memory memory-leaks


【解决方案1】:

我们可以看看String constructor

public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}

请注意,原始字符串的value 没有被复制,因此新创建的字符串和"abc" 将引用相同的底层字符数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多