Java只存在值传递。调用方法时,基本类型传递值副本,引用类型传递引用副本(地址值),二者均不改变原变量指向,方法内修改仅影响对象状态而非引用本身。

Java中只存在值传递,不存在引用传递。这个结论可能和很多人的直觉相反,但这是理解Java参数传递的关键。
值传递指的是:调用方法时,将实际参数的副本传给形式参数。方法内部对参数的修改不会影响原始数据。
在Java中,无论是基本类型还是引用类型,传递的都是值:
很多人认为Java中对象是“引用传递”,因为方法内可以修改对象的状态。其实这是因为:
立即学习“Java免费学习笔记(深入)”;
void changeValue(StringBuilder sb) {
sb.append("world");
sb = new StringBuilder("new");
}
StringBuilder a = new StringBuilder("hello");
changeValue(a);
System.out.println(a); // 输出 "helloworld",不是"new"
虽然方法内让sb指向了新对象,但这不影响外面的a,因为sb只是a的引用副本。
真正区别不在于“值”或“引用”,而在于:
本质上,Java所有参数传递都是值传递。对象的“可变性”来自于引用副本仍指向同一堆对象,而不是传递方式不同。
以上就是Java中引用传递和值传递的本质区别的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号