Java中值传递与引用传递
2016-05-14 17:20
531 查看
//Test.java public class Test { public static void main(String[] args) { Person ps = new Person(); ps.setPerson(10,"yyy",new Address()); ps.printPerson(); Address ad = ps.getAddress(); String n = ps.getName(); n = "lll"; //Person psCopy = ps; //psCopy.setPerson(11,"llll"); ad.setAddress("Zhenjiang", "HangZhou"); ps.printPerson(); } }
//Person.java public class Person { private int age; private String name; private Address address; public void setPerson(int age, String name, Address address) { this.age = age; this.name = name; this.address = address; } public String getName() { return this.name; } public Address getAddress() { return address; } public void printPerson() { System.out.println("name:,"+name); System.out.println("age:,"+age); address.printAddress(); } }
//Address.java public class Address { private String province; private String city; public Address() { province = "ShanDong"; city = "JiNan"; } public void setAddress(String province, String city) { this.province = province; this.city = city; } public void printAddress() { System.out.println("province:," + province); System.out.println("city:," + city); } }
输出结果:
name:,yyy
age:,10
province:,ShanDong
city:,JiNan
name:,yyy
age:,10
province:,Zhenjiang
city:,HangZhou
基本类型(String,int)传递的是值,自定义“类”传递的是引用。
修改Test.java文件,再来看一下运行结果
public class Test { public static void main(String[] args) { Person ps = new Person(); ps.setPerson(10,"yyy",new Address()); ps.printPerson(); changObject(ps); ps.printPerson(); } public static void changObject(Person ps) { Address ad = ps.getAddress(); String n = ps.getName(); n = "lll"; ad.setAddress("Zhenjiang", "HangZhou"); } }
输出结果:
name:,yyy
age:,10
province:,ShanDong
city:,JiNan
name:,yyy
age:,10
province:,Zhenjiang
city:,HangZhou
可见函数参数传递时也遵照上面的规则。
Java中只有基本数据类型在栈区,自定义类放在堆区。
Person ps;//会在Java IDE报错 Person ps = new Person();//不会报错
相关文章推荐
- 69道Spring面试题和答案
- java设计模式-观察者模式学习
- java入门之中文输出问题
- java 实现N个女人过桥问题
- JDK API文档下载
- java中Comparator的用法
- spring factory-method
- MyEclipse8.5破解方法
- Runnable、Callable和Future
- 【JAVA基础系列】IEEE754二进位浮点算数标准-JAVA转换器实现
- JAVA多线程之volatile 与 synchronized 的比较
- Spring——jar包详解
- 可能忽略的Java基础知识-小心使用synchronized和volatile
- java消息队列使用场景
- Exception occurred during code generation for WSDL
- Spring-EhCache配置实例
- Java 泛型
- 2016 百度之星 B题(java实现)
- Java获取泛型的实际类型
- java 内存:重排序