java - "someString"相当于新字符串 ("someString"吗?在java中

标签 java string compiler-construction instantiation compiler-optimization

我一直以为java中有这样的表达式:

String tmp = "someString";

只是某种“语法糖”

String tmp = new String("someString");

当我最近反编译我的java应用程序时,我看到了

的所有用法
public static final String SOME_IDENTIFIER = "SOME_VALUE";

在代码中仅替换为值,并且静态最终变量被删除。

每次想要访问静态final时,不会实例化一个新的字符串吗?这怎么能被认为是“编译器优化”??

最佳答案

Java 源代码中的字符串文字被保留,这意味着具有相同文本的所有文字将解析为同一实例。

换句话说,“A”==“A”将为真。

创建一个新的String实例将绕过它; "A"== new String("A") 不会为 true。

关于java - "someString"相当于新字符串 ("someString"吗?在java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17452278/

相关文章:

java - Amazon SQS 缺少方法

java - 如何将文本设置为禁用的 JTextArea

compiler-construction - 如何在 Mac OS X 10.6.3 上编译 Open CL?

compiler-construction - 类型检查器库

c++ - 读取文件时如何将字符串转换为字符数组?

ios - 如何将 CUPS 安装到 iOS 设备上?

java - HTTP URL 连接中出现错误

java - 如何扁平化整个包层次结构?

java - 为什么以下正则表达式不适用于 Java?

node.js - 我希望我的漫游器删除包含关键字或包含相似字符的消息