【发布时间】:2015-05-22 19:14:44
【问题描述】:
如果字符串对象被实习,那么为什么改变一个不会影响另一个
public class EqualExample {
public static void main(String[] args) {
String str = new String("Hello");
String str1 = new String("Hello");
System.out.println(str == str1);
System.out.println(str1.equals(str));
}
}
上述程序的输出将是
假的 真的
public class EqualExample {
public static void main(String[] args) {
String str = "Hello";
String str1 = "Hello";
System.out.println(str == str1);
System.out.println(str1.equals(str));
}
}
以上代码的输出是
真 真的
这是因为在字符串池中 Heloo 已经存在,所以它在字符串中实习并引用同一个对象,那么为什么如果我将 str1 更改为“heloo java”,那么为什么 str 仍然具有值“heloo”。因为它们引用相同的对象,所以 str 的值必须改变 公共类 EqualExample { 公共静态 void main(String[] args) {
String str = "Hello";
String str1 = "Hello";
System.out.println(str == str1);
System.out.println(str1.equals(str));
str1="Heloo java";
System.out.println(str+str1);
System.out.println(str == str1);
System.out.println(str1.equals(str));
}
}
输出真 真的 HelooHeloo java 错误的 假的
【问题讨论】:
-
String对象是不可变的。您不能更改String对象的内容。 -
答:因为字符串是不可变的,如果你改变字符串的值,它就是不同的字符串。
标签: java