-1

我需要你的知识来解释一些让我困惑的非常简单的事情如你所见,这是 Java 的一个非常初级的实践,我已经面临第一个困惑。
所以问题是,从 A、B、C、D 来看,什么是真的?

A. 第 12 行打印 4

B. 第 13 行打印 9

C. 第 13 行打印 18

D. 第 14 行打印 18

我知道答案是 C 和 D,但是因为我正在学习并且我试图理解为什么,请您向我解释一下吗?
我一开始以为正确的是A和B,但结果我错了。

到底发生了什么以及在其中ob.t = ob2; ob2.t = ob;的作用是什么?Test t;Class Test

1  class Test {
2     Test t;
3     static int a;
4     Test(int i) { a = i; }
5     void xchange(Test ob, int i) { ob.a = i * ob.a; } 
6  }
7  class Call {
8     public static void main(String args[]) {
9        Test ob = new Test(2); Test ob2 = new Test(3);
10       ob.t = ob2; ob2.t = ob;
11       ob.xchange(ob, 2); ob2.xchange(ob.t, 3);
12       System.out.println(ob.a);
13       System.out.println(ob2.a);
14       System.out.println(ob.t.a); 
15    } 
16 }
4

1 回答 1

0

Test t;在课堂上的作用是什么Test

它声明了一个Test类型为“reference to Test”的字段。请注意,Java 中的变量和字段不能存储对象;它们只能存储对对象的引用。

到底是怎么回事ob.t=ob2; ob2.t=ob;

它将t两个对象的字段设置Test为包含对彼此的引用。所以第一个对象的t字段包含对第二个对象的引用,反之亦然。

说“它分配ob'st字段以包含对ob2”的引用很诱人,但严格来说这是不正确的,因为obob2不是对象。

于 2015-02-17T02:54:28.370 回答