java - 最终引用变量的重要性

标签 java string

String a="A";
String b="B";
final String c="C";
final String d="D";

String e=a+b;
String f=a+b;
System.out.println(e==f);//false

String g=c+d;
String h=c+d;
System.out.println(g==h);//true

为什么会这样?字符串对象创建在一个特殊的内存中,称为字符串常量池。但是这里final变量的意义是什么。

最佳答案

final 关键字可防止您重新分配 变量给字符串的不同实例。因此,虽然 String 本身是不可变的,但引用它的变量可以更改,除非明确标记为 final。

现在,我不太确定您在这里遇到的确切语义。但一般来说,由于变量是最终变量,c+d 现在可以被视为编译器常量(它永远不能有 "CD" 以外的值。该值是在编译时计算的,它本身可以被视为一个常量,被放入驻留字符串池中。

关于java - 最终引用变量的重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9083931/

相关文章:

Python:按字符位置分割字符串

C#:是否与 C# 的 php ctype_digit 函数类似?

java - setOnclicklistener 方法不起作用

java - 在 switch/case 语句中使用列表中的值作为 case

java - 短按显示上下文菜单而不是长按

java - 使用 SHA 256 散列并使用 AES 加密

java - Java Web 应用程序的架构

C - "char var[]"和 "char *var"之间的区别?

javascript - 从javascript字符串中删除空字符串字符

c++ - 用一个空格替换字符串中的多个空格