gpt4 book ai didi

java - 请帮我理解以下代码中的 'assign'方法

转载 作者:行者123 更新时间:2023-12-01 15:07:25 25 4
gpt4 key购买 nike

class Test { 

int a, b;

Test(int a, int b) {
this.a = a;
this.b = b;
}

Test() {
a = 0;
b = 0;
}

void print() {
System.out.println("A=" + a + ", B=" + b);
}

void assign(Test ob) { //How can a class(Test) be passed as an argument in a method?
this.a = ob.a; //What does ob.a do?
this.b = ob.b; //What does ob.b do?
} //How can a object 'ob' be passed as an argument?
}

.

class TestDem { 

public static void main(String ar[]) {
Test ob1 = new Test(1, 2);
System.out.println("1st object");
ob1.print();
Test ob2 = new Test();
System.out.println("2nd object");
ob2.print();
ob2.assign(ob1); //dont understand how this statement works with the 'assign' method
System.out.println("After assigning object 1 to object 2");
System.out.println("1st object");
ob1.print();
System.out.println("2nd object");
ob2.print();

}
}

输出

1st object
A=1, B=2
2nd object
A=0, B=0
After assigning object 1 to object 2
1st object
A=1, B=2
2nd object
A=1, B=2

最佳答案

void assign(Test ob) {  
this.a = ob.a;
this.b = ob.b; //What does ob.b do?
}

此方法与您使用过的构造函数类似:-

public Test(int a, int b) {
this.a = a;
this.b = b;
}
  • 不同之处在于,在此方法中,您将获取 a 的值和b来自传递的引用而不是参数 a 和 b 本身..
  • 另请注意,它不是构造函数。它只是将传递的引用的值分配给当前对象。而构造函数在创建实例后初始化实例的状态。

How can a class(Test) be passed as an argument in a method?

我们在这里没有通过类测试,相反,我们正在传递对对象的引用测试类..

该方法除了创建该引用所指向的对象的副本(在本例中为 ob)之外什么也不做。因此,在该方法执行后,当前对象(由 this 指向)将具有与传递的对象..

What does ob.a do?

ob.a 指的是instance变量a供引用obTest ,您传递到此方法中..

所以,如果你有:-

Test ob2 = new Test(1, 2);
Test ob1 = new Test();
ob1.assign(ob2);

那么当这个方法执行时:-

this指的是当前引用,所以this在方法assign中将引用ob1 ,因为我们正在调用此引用..

并且,您将获得引用号 ob2在 main 方法中,和 obassign的参数中指向同一个对象的方法..

因此,ob1.a(this.a) 将等于 ob2.a,并且
ob1.b(this.b) 将等于 ob2.b

关于java - 请帮我理解以下代码中的 'assign'方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12799635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com