我一直以为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/