标题: 帮忙看看这个编译结果区别是什么原因? [打印本页] 作者: 常万 时间: 2012-3-14 19:32 标题: 帮忙看看这个编译结果区别是什么原因? public class People
{
int age = 20;
public void change(People people)
{
people = new People();
people.age = 30;
}
public static void main(String[] args)
{
People people = new People();
int age = people.age;
System.out.println(age);
people.change(people);
int age2 = people.age;
System.out.println(age2);
}
People people = new People(); //1
int age = people.age;
System.out.println(age);
people.change(people);
int age2 = people.age;//2 一处的和这里都是一个Person age=20
System.out.println(age2);
你在函数里有创建了一个新的实例运行完就没了,局部变量分不清楚啊,即使不是局部的函数里创建的也是个新实例,你改变它的值和main 函数的person实例有什么关系作者: lipanfeng 时间: 2012-3-14 20:30
people.change(people);
int age2 = people.age;
System.out.println(age2);
调用chang()方法的作用是改变某个People对象的age属性值,当调用
chang()方法时,age的值改变为30,所以再次调用的时候调用的是改变后的age的值,所以打印30作者: 冯建鹏 时间: 2012-3-15 01:02
public class People
{
int age = 20;
public void change(People people)
{
people = new People();//①
people.age = 30;
//System.out.println(people.age);⑥
}
public static void main(String[] args)
{
People people = new People();
int age = people.age;//④
System.out.println(age);
people.change(people);//②
int age2 = people.age;//③
System.out.println(age2);
}