java值传递

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变量指向的对象的属性)

相关文章
相关标签/搜索