java – 如果字符串对象被实习,那么为什么改变一个不会影响其他
发布时间:2020-12-15 05:21:39 所属栏目:Java 来源:网络整理
导读:参见英文答案 What is the difference between a variable,object,and reference? ????????????????????????????????????5个 如果字符串对象被中断,那么为什么改变一个不会影响其他对象 public class EqualExample {public static void main(String[] args)
参见英文答案 >
What is the difference between a variable,object,and reference? ????????????????????????????????????5个
如果字符串对象被中断,那么为什么改变一个不会影响其他对象 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 alredy存在所以它实际上是字符串并引用相同的对象然后为什么如果我将str1更改为“heloo java”然后为什么str仍然具有值“heloo”.因为它们引用相同的对象所以str的值必须改变 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)); } } 输出为真 解决方法
str1不是String.它是对String对象的引用.通过做
str1 = "Heloo java"; 你没有修改String对象,你只是将引用指向另一个不同的String对象. 之前: str --------> "Hello" ^ str1 -----------| 后: str --------> "Hello" str1 -------> "Heloo Java" 改变对象将包括做类似的事情 str1.setCharacters("Heloo Java"); 但是这样的方法不存在,因为字符串是不可变的.因此,他们的角色无法修改(除非使用脏反射技巧). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |