public class text04 { public static void main(String[] args) { Person p =new Person(); B b = new B(); p.name="jack"; p.age=10; b.c(p); System.out.println(p.name); System.out.println(p.age); } } class Person{ String name; int age ; } class B{ public void c(Person p){ p.name="tom"; p.age=99; } }
在上面的案例中,因为对象是引用数据类型,所以在在B类中局部变量可以改变全局变量
输出的结果是tom 99
如果上面的案例在B类加上一行p=new Person();,变为
public class text04 { public static void main(String[] args) { Person p =new Person(); B b = new B(); p.name="jack"; p.age=10; b.c(p); System.out.println(p.name); System.out.println(p.age); } } class Person{ String name; int age ; } class B{ public void c(Person p){ p=new Person(); p.name="tom"; p.age=99; } }
则输出结果为jack 10
这是因为在B类中,p对象又开辟了一段空间,但是则个类运行完后,就当作垃圾释放掉了,所以在main中p还是原来空间的数据