java - 字符串赋值和输出

标签 java

给定以下代码:

String str1 = new String("Hello");
String str2 = str1;
String str3 = new String(str1);
String str4 = str3;
str4 += " World ";
if (str3==str4)
     System.out.println(“one”);
if (str3.equals(str4))
     System.out.println(“two”);
if (str1==str2)
     System.out.println(“three”); 
if (str3.equals(str2))
     System.out.println(“four”);

输出是:三和四

我不明白..我们刚刚做了 str3 == str4 。他们怎么能不指同一个对象..? str3 == str4 似乎是错误的,我不明白为什么。此外,str3.equals(str4) 也返回 false,但我想这与我没有得到的第一件事有关。

很想得到解释。

最佳答案

因为 String 是不可变的,+= 运算符创建一个新实例并将其分配给 str4。因此 str4 不等于 str3

关于java - 字符串赋值和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545542/

相关文章:

java - 从 LinkedHashMap 获取有序 Stream

java - 数组的通用列表

java - 回溯递归问题来解决平衡括号

java - 单击按钮时触发验证(Java swing)

java - compareTo() 方法如何比较字符串?

java - Postgresql 格式化日期

java - 如何将字符串流转换为字符串流对?

java - 在Java中定义 double 的小数位

java - 如何在android计算器中获得±的正确功能?

java - Spring TransactionProxyFactoryBean 仅在从外部类调用方法时才支持事务