Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用点符号访问实例变量_Java - Fatal编程技术网

Java 使用点符号访问实例变量

Java 使用点符号访问实例变量,java,Java,我正在为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;

我正在为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
我是否可以通过局部变量访问局部实例变量?

孤岛的每个实例都有自己版本的
n
字段

当您使用点表示法时,您正在访问字段,因此在您给出的示例中,您正在将对象的
n
字段的值更改为
孤岛
对象

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的内容。

因为属于类Island的每个实例的Island类型的成员变量n是用默认范围(package private)声明的,所以您可以用点直接访问字段


换句话说,在这种情况下,您可以访问Island n.

表达式的哪个部分
i2.n=i3i2.n
是字段访问表达式。你的访问表达式是正确的-我承认,但是你应该在对象一章中为我指出正确的主题。这就是为什么我仍然认为你对这个问题的贡献是无用的。如果你不想给出精确的答案,不要打字。未来的建议我知道用dot我可以访问另一个变量。我只是不知道i2.n是怎么工作的。我能进入n岛吗?如果是,看起来我可以通过i2、i3、i4访问岛n,这就是我困惑的地方。谢谢回复@SamTebbs33