您的位置:首页 > 编程语言 > Java开发

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();//不会报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: