java - String 在 Java 中如何成为引用类型?

标签 java string reference

我知道类是引用类型,例如我创建了以下类:

class Class {

String s = "Hello";

public void change() {
    s = "Bye";
} }

通过以下代码,我明白 Class是引用类型:
Class c1 = new Class(); 
Class c2 = c1; //now has the same reference as c1

System.out.println(c1.s); //prints Hello
System.out.println(c2.s); //prints Hello

c2.change(); //changes s to Bye

System.out.println(c1.s); //prints Bye
System.out.println(c2.s); //prints Bye

现在我想用字符串做同样的事情,但这是行不通的。我在这里做错了什么?:
String s1 = "Hello";
String s2 = s1; //now has the same reference as s1 right?

System.out.println(s1); //prints Hello
System.out.println(s2); //prints Hello

s2 = "Bye"; //now changes s2 (so s1 as well because of the same reference?) to Bye

System.out.println(s1); //prints Hello (why isn't it changed to Bye?)
System.out.println(s2); //prints Bye

最佳答案

在第一种情况下,您正在调用被引用对象的方法,因此被引用对象会发生变化,而不是 2 个引用:

method

在第二种情况下,您将一个新对象分配给引用本身,然后指向该新对象:

new object

关于java - String 在 Java 中如何成为引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466358/

相关文章:

java - 内部依赖类限定名称冲突

java - fragment 中是否有类似 setResult() 的方法?

python - 如何打印字符串中的单词?

java - 如何在Java中解析文件中的整数?

c++ - 无法访问引用 C++ 背后的信息

java - 传递数组引用时,如何更改对其他数组的引用?

java - jsf中的 session 超时

java - Eclipse Maven Spring 项目 - 错误

c malloc() - 我需要为空终止符分配空间吗

java - 在 Java 中,嵌套类与其外部类之间的关系是什么?