提问人:Ahmed elmenshawie 提问时间:1/19/2017 最后编辑:vefthymAhmed elmenshawie 更新时间:1/19/2017 访问量:238
对对象的引用的 Java 调用方法会影响调用方 [duplicate]
Java Calling methods on a reference to an object does affect the caller [duplicate]
问:
在“Oracle Certifi ed Associate Java SE 8 Programmer I Study Guide”中谈到了按值传递,说:对对象的引用调用方法确实会影响调用者
public static void main(String[] args) {
StringBuilder name = new StringBuilder();
speak(name);
System.out.println(name); // Webby
}
public static void speak(StringBuilder s) {
s.append("Webby");
}
在本例中,输出是 Webby,因为该方法仅调用 参数。它不会将名称重新分配给其他对象。
那么这意味着什么呢?我不明白。不应该有 2 个不同的对象吗?
答:
0赞
Steve Smith
1/19/2017
#1
Java 将对象参数作为引用的副本传递给原始对象。这意味着传递给 as 的 StringBuilder 与 main 函数中的 StringBuilder 实例完全相同,并且对它调用方法将在两个方法中影响它。但是,如果您要指向 StringBuilder 的另一个实例,它不会影响 main() 函数中的 StringBuilder。speak()
s
s
speak()
name
上一个:在 lisp 中按值传递参数
下一个:按值传递和按名称传递的输出
评论