头第一个Java示例,代码磁铁练习,第3章



,尽管作者一直告诉我忽略我现在无法理解的东西,但我真的做不到,所以请解释到底是什么:

class TestArrays {
    public static void main(String [] args) {
        int [] index = new int[4];
        index[0] = 1;
        index[1] = 3;
        index[2] = 0;
        index[3] = 2;
        String [] islands = new String[4];
        islands[0] = “Bermuda”;
        islands[1] = “Fiji”;
        islands[2] = “Azores”;
        islands[3] = “Cozumel”;
        int y = 0;
        int ref;
        while (y < 4) {
            ref = index[y];
            System.out.print(“island = “);
            System.out.println(islands[ref]);
            y = y + 1;
        }
    }
}

输出:

island = Fiji  
island = Cozumel  
island = Bermuda  
island = Azores

ref不做任何事情,因为它在程序中没有发生:) java对病例敏感!REF用于暂时存储数组索引中的元素,然后将其用于引用阵列岛的元素。这是一种称为"查找表"的技术的应用。

所以,当y = 0时,

ref = index[y]

从索引中获取0元素,这是1。这意味着

islands[ref]

变成

islands[1]

因此,从岛屿阵列中获取" fiji"。

ref实际上被用作数组岛的参数,该参数正在采用数组"索引"的输出,并向数组提供输入"岛"

迭代时循环如下

y=0 ref=1  islands[1]=Fiji
y=1 ref=3  islands[3]=Cozumel
y=2 ref=0  islands[0]=Bermuda
y=3 ref=2  islands[2]=Azores

您可以看到输出顺序与索引数组的顺序不同,这就是为什么使用ref。

希望它有帮助。

ref就像指针一样,在这种情况下,ref切换了指向的对象,并将它们打印到循环中的屏幕

最新更新