Java值传递和引用传递

概念

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

Java值传递和引用传递

1、按值传递:指的是在方法调用时,传递的参数是按值的拷贝传递

public class Test {
	
	public static void main(String args[]){
		int a = 11;
		Test.change(a);
		System.out.println("main方法中a的值是:"+a);
	}
	
	public static int change(int a){
		a = 22;
		System.out.println("change方法中a的值是:"+a);
		return a;
	}
}

运行结果:

Java值传递和引用传递

2、按引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址

public class Test {
	
	public static void main(String args[]){
		Demo demo = new Demo();
		demo.value = 10;
		Test.change(demo);
		System.out.println("main方法中demo.value的值是:"+demo.value);
	}
	
	public static void change(Demo demo){
		demo.value = 20;
		System.out.println("change方法中demo.value的值是:"+demo.value);
	}
}

class Demo{
	public int value = 0;
}

运行结果:

Java值传递和引用传递

 

 

总结:

 

(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Demo”;

 

 

Java值传递和引用传递
关注公众号:nick_coding1024

觉得对你有帮助,关注博客和公众号。不定期分享最新前沿技术框架和bat大厂常用技术等,加群不定期分享行业内大牛直播讲课以及获得视频课件资料等。