`
kankan1218
  • 浏览: 271857 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java到底是传值还是传引用?

阅读更多
java传值还是传引用。 JAVA中的传递都是值传递吗?有没有引用传递呢?

在回答这两个问题前,让我们首先来看一段代码:
import java.util.ArrayList;
import java.util.List;

public class Test1 {
	Test2 test2 = new Test2();
	
	public static void main(String[] args) {		
		new Test1().fun1();
	}
	
	public void fun1(){
		int a = 5;		
		List<Integer> list = new ArrayList();
		list.add(2);
		test2.fun2(a,list);
		System.out.println(a);		
		System.out.println(list.size());
	}
}

import java.util.List;
public class Test2 {	
	public void fun2(int a,List<Integer> list){
		a = 10;
		list.remove(0);
	}
}


运行结果如下:
5
0


最后我们得出如下的结论:

基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。
对象和引用型变量被当作参数传递给方法时,在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。至于到底它是值传递还是引用传递,这并不重要,重要的是我们要清楚当一个引用被作为参数传递给一个方法时,在这个方法体内会发生什么
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics