转载

java – 为什么常量字符串使用intern()?

我知道JVM中的字符串池以及文字和字符串对象之间的区别.我知道文字是自动实习的,但这条线的目的是什么呢:

public static final String PARAMETER = "value".intern();

在我的问题上,我总是找到大量的文字,这些文字解释了我同样强调文字和对象之间的区别,并提到文字已经被实习.因此,我想知道使用intern()而不是文字的那个棘手的行的基础.

这种类型的代码的主要好处是防止编译时常量被内联.

例如,假设您在一个类中有一个常量,并且您有许多其他类引用该常量.通常,如果更改常量值,则需要重新编译所涉及的所有类.在字段上使用intern()将阻止常量的内联,并且意味着仅重新编译常量类就足够了.从理论上讲,这种方法会有较差的表现,尽管我不知道可能会有多重要.

This SO question 涵盖相同的主题,是一个有用的阅读.

翻译自:https://stackoverflow.com/questions/21260072/why-constant-strings-use-intern

原文  https://codeday.me/bug/20190111/519611.html
正文到此结束
Loading...