入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

一个简单的例子让你理解值传递和引用传递

创建时间:2016-04-20 投稿人: 浏览次数:3544
碰到一些做了好几年java开发的程序员还弄不清楚值传递和引用传递的区别,下面通过一个简单的例子来说明:
public class Person {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

public class Test1 {

	public static void main(String[] args) {
		
		Person p = new Person();
		p.setName("张三");
		System.out.println(p.getName());
		
		change1(p);
		System.out.println(p.getName());//打印结果 李四
		
		p=new Person();
		p.setName("王五");
		change2(p);
		System.out.println(p.getName());// 打印结果 王五

	}
	
	public static void change1(Person p){
		p.setName("李四");
	}
	public static void change2(Person p){
		Person person=new Person();
		person.setName("赵六");
		p=person;
	}
}

可以看到第二个结果为王五,change2方法中将p重新指向了一个新的对象,但是main方法中的对象p仍然是指向name为"王五"的person对象,因为java中只有值传递而没有引用传递,执行change2(p)也只是将p指向的内存地址值传递过去,而并非传递对象本身,假设是引用传递的话,调用change2(p)之后将会打印"赵六"。而change1(p)中是通过操作对象的方法来修改对象本身的内容,所以打印结果为"李四"。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。