(二十)值传递与引用传递有哪些区别

场景:值传递和引用传递是应用在参数传递时

一、值传递:传递的是基本数据类型

在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是确实不同的存储单元,因此对形参的改变不会影响实参的值

package com.zejian.test;
/**
 * java中的按值调用
 * @author zejian
 */
public class CallByValue {
	
	private static int x=10;
	
	public static void updateValue(int value){
		value = 3 * value;
	}
	
	public static void main(String[] args) {
		System.out.println("调用前x的值:"+x);
		updateValue(x);
		System.out.println("调用后x的值:"+x);
	}
	
}

二、引用传递

传递的是对象(也可以看做是对象的地址),这时形参与实参的对象指向同一块存储单元,因此对形参的修改就会影响实参的值

package com.zejian.test;
/**
 * java中的按值调用
 * @author zejian
 */
public class CallByValue {
	private static User user=null;
	public static void updateUser(User student){
		student.setName("Lishen");
		student.setAge(18);
	}
	
	
	public static void main(String[] args) {
		user = new User("zhangsan",26);
		System.out.println("调用前user的值:"+user.toString());
		updateUser(user);
		System.out.println("调用后user的值:"+user.toString());
	}
}

posted @ 2019-02-16 17:14  测试开发分享站  阅读(171)  评论(0编辑  收藏  举报