传值还是传引用的讨论

xiaoxiao2025-12-12  6

不管你传的是什么,传过去的都只是参数拷贝的一个副本而已,这个副本作为方法的局部变量保存在栈中。 如果传的是基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,仅仅只是一个副本。 如果传的是一个对象的引用,也是一样的,也是一个副本,但是这个副本和作为参数传进来的那个引用指向的是内存中的同一个对象,所以你可以通过这个副本操作那个对象。但是如果你修改这个引用本身,比如让他指向内存中的另外一个对象,原来作为参数传进来的那个引用不会受到影响。 public class Reference { private int i; public Reference(int i) { this.i = i; } public void switchparam(int i) { i = 10; } public void switchsobject(Reference r) { r = new Reference(100); } public void switchparam(Reference r) { r.i = 1000; } public void getI() { System.out.println( "reference i="+i); } public static void main(String[] args) { /**把基本类型作为参数进行传递**/ Reference ref=new Reference(10); ref.switchparam(ref.i); ref.getI(); /**把引用作为参数进行传递**/ ref.switchsobject(ref); ref.getI(); /**把引用作为参数进行传递,改变引用所指向对象的属性**/ ref.switchparam(ref); ref.getI(); } } reference i=10reference i=10reference i=1000
转载请注明原文地址: https://www.6miu.com/read-5040761.html

最新回复(0)