java中方法的参数传递机制(值传递还是引用传递)

Posted 明理

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中方法的参数传递机制(值传递还是引用传递)相关的知识,希望对你有一定的参考价值。

看到一个java面试题:

问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 
  答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。

以下是从其他文章里转的,只为加深理解

 

public class TempTest {  
private void test1(A a){  
a.age = 20;  
System.out.println("test1方法中的age="+a.age);  
}  
public static void main(String[] args) {  
TempTest t = new TempTest();  
A a = new A();  
a.age = 10;  
t.test1(a);  
System.out.println(”main方法中的age=”+a.age);  
}  
}  
class A{  
public int age = 0;  
} 

 

结果是

test1方法中的age=20  
main方法中的age=20

说明:在执行第10步t.test1(a); 时,main()中的变量a和test1中的变量a指向同一个地址,在test1方法中并没有改变a的地址而是改变了属性的值,所以结果是main方法中的a的值发生了变化,但是这不是引用传递。除非在test1方法中new一个新的对象,把这个新的地址赋给a,则为引用传递,其结果中a的值不会发生变化。

 


以上是关于java中方法的参数传递机制(值传递还是引用传递)的主要内容,如果未能解决你的问题,请参考以下文章

java的值传递机制

Java的参数传递是值传递还是引用传递?

Java中的参数传递方式到底是引用传递还是值传递?

有关java参数的两种传递机制

Java面试题方法的参数传递机制

Java是值传递还是引用传递?