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