public class TestMain { public void test(Dog dog) { dog.name = "wc007"; } public static void main(String[] args ) { Dog dog = new Dog(); int a = 10; dog.login(a); System.out.println(a); dog.name = "wc"; new TestMain().test(dog); System.out.println(dog.name); } }
public class Dog { String name; public void login(int a) { a = a + 1; } } 10 wc007
public void test(Dog dog) {
dog.name = "wc007";
}spa
public static void main(String[] args ) {
Dog dog = new Dog();
int a = 10;
dog.login(a);
System.out.println(a);code
dog.name = "wc";
new TestMain().test(dog);
System.out.println(dog.name);對象
Dog dog = new Dog();堆內存中開闢new Dog(地址爲ox001),name值爲null,棧內有了Dog dog,地址指向ox001,內存
int a = 10,棧內存有了局部變量(局部變量隨着方法的消失而消失,因此main方法結束纔會消失)class
dog.login(a);對象(帶有對象地址的變量)調用login方法(把a = 10傳進去了,棧內存有了int a =10)執行a = a + 1;獲得a =11;(a = 11是局部變量隨着login方法的結束而結束)test
System.out.println(a);這個時候棧內存中只有int a = 10;就近原則變量
dog.name = "wc";變量給對象的名字從新賦值爲wc;棧內存中Dog dog地址仍是ox001,方法
new TestMain().test(dog);new testMain對象調用test方法,並傳入Dog dog變量,test方法傳入的dog變量地址也是ox001,static
dog.name = "wc007";從新把wc007賦值給dog對象的name,這個時候地址爲ox001的對象dog裏面的全局屬性name值爲ox007co
System.out.println(dog.name);輸出dog.name(dog變量指向的對象的屬性)