java - 比较 Java 中的字符串引用

标签 java string

以下代码片段中的代码仅比较字符串引用。

String str1 = "mystring9";
String str2 = "mystring"+String.valueOf(9);

System.out.println(str1==str2);

在本例中,str1==str2返回false .

<小时/>

以下代码段还返回 false .

String str1 = "mystring9";
String str2="mystring"+str1.length();

System.out.println(str1==str2);
<小时/>

但是,以下代码返回 true .

String str1 = "mystring9";
String str2 = "mystring"+9;

System.out.println(str1==str2);

我认为,表达式 "mystring"+9在此代码中应在内部评估为 String.valueOf(9)但是为什么前两个示例返回的输出与前面的示例不同?

最佳答案

Java 编译器将预先评估所有仅常量操作。 (这称为 constant folding )

因此,"A"+ "b"+ 3 编译为 "Ab3"

关于java - 比较 Java 中的字符串引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592301/

相关文章:

r - 使用 R 比较两个单词并查找第二个单词特有的字母(跨越约 6000 个案例)

linux - 如何提取字符串开头的一部分?

c - 将 C 字符串传递给函数

java - 对于多态类,可以使用 protected 实例变量吗?

java - 在 Spring Batch 中将 jobParameters 传递给 bean

java - Android 相对布局并隐藏其他 View 定义在其上方的 subview

java - 在 GridBagLayout 中制作滚动条

java - 为什么Java中字符串变量的声明是大写的?

mysql - 如何在mysql select中自动连接字符串长度

java - Spring Boot Web 应用程序未在 tomcat 9 上运行