一个简单的例子让你理解值传递和引用传递
碰到一些做了好几年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。
- 上一篇: 使用hibernate数据库连接不释放的问题
- 下一篇:没有了
