Java中的参数传递是通过值传递的。当我们将一个对象作为参数传递给方法时,实际上传递的是对象的引用(内存地址)的副本。因此,在方法内部,我们可以通过这个引用来访问和修改对象的状态。但是,如果我们试图重新分配一个新的对象给这个引用,它将不会影响到原来的对象,因为我们只是改变了传递的副本。
例如:
public static void main(String[] args) {
MyClass obj1 = new MyClass();
obj1.value = 10;
System.out.println("Before: " + obj1.value);
changeValue(obj1);
System.out.println("After: " + obj1.value);
}
public static void changeValue(MyClass obj) {
obj = new MyClass();
obj.value = 20;
}
在这个例子中,即使我们在changeValue
方法中创建了一个新的MyClass
对象并将其分配给obj
引用,但这个新对象不会影响到main
方法中的obj1
对象。因此,输出将是:
Before: 10
After: 10
这个例子表明,即使Java中的参数传递是通过值传递的,但对于对象来说,传递的值实际上是一个引用。因此,我们可以在方法内部通过这个引用来访问和修改对象的状态,但重新分配一个新的对象将不会影响到原来的对象。
领取专属 10元无门槛券
手把手带您无忧上云