我正准备参加OCJP考试。我面对以下代码:
public class Island {
Island n;
public static void main(String[] args) {
Island i2 = new Island();
Island i3 = new Island();
Island i4 = new Island();
i2.n = i3;
i3.n = i4;
i4.n = i2;
}
}
有人可以向我解释这里发生了什么吗?
i2.n = i3;
i3.n = i4;
i4.n = i2;
详细说明我不明白i2.n背后的魔力是什么; i3.n; i4.n 我是否可以通过本地变量访问本地实例变量?
答案 0 :(得分:1)
Island
的每个实例都有自己的n
字段版本。
使用点表示法时,您正在访问该字段,因此在您给出的示例中,您将对象的n
字段的值更改为Island
个对象。
i2.n = i3; // The value of n inside i2 is now i3
i3.n = i4; // The value of n inside i3 is now i4
i4.n = i2; // The value of n inside i3 is now i2
这是任何面向对象编程语言的一个非常基本的元素,所以我建议你阅读更多关于Java的内容。
答案 1 :(得分:1)
因为类型Island的成员变量n属于类Island的每个实例都是使用默认范围(包私有)声明的,所以您可以使用点直接访问该字段。
换句话说,在这种情况下,您可以访问Island n。