该死的参数传递机制!
public static void main(String[] args) {
Person person = new Person();
test01(person);
test02(person);
System.out.println(person.getName());
}
static void test01(Person person){
person.setName("world");
}
static void test02(Person person){
person = new Person();
person.setName("hello");
}
看到的兄弟给个结果吧..
[解决办法]
答案是 world啊,要分清引用变量和被引用的对象之间的区别,main方法里Person person=new Person();这句,你建立了一个Person类型的引用变量(相当于指针),指向new person()生成的这个person实例,假设叫做实例A。test01中调用的person指向A,调用的A的方法。而你在test02中改变了person这个引用变量指向的实例,你生成了一个新实例,假设叫做B,并调用B的方法,那么现在A的name属性是A,B的name属性是hello。然后java是值传递,所以main方法中的person还是原来的person指向A对象,所以最后打出来的是world。