在Java中链接数组赋值

时间:2011-12-15 19:06:08

标签: java

考虑Java中的以下代码片段。我知道以下代码段中的语句temp[index] = index = 0;几乎是不可接受的,但在某些情况下可能是必要的:

package arraypkg;

final public class Main
{
    public static void main(String... args)
    {
        int[]temp=new int[]{4,3,2,1};
        int index = 1;

        temp[index] = index = 0;
        System.out.println("temp[0] = "+temp[0]);
        System.out.println("temp[1] = "+temp[1]);
    }
}

它在控制台上显示以下输出。

temp[0] = 4
temp[1] = 0

我不明白temp[index] = index = 0;

temp[1]如何包含0?这项任务是如何发生的?

4 个答案:

答案 0 :(得分:9)

分配完成(temp[index] = (index = 0)),右关联。

但首先,对LHS变量计算表达式temp[index]。那时index仍为1.然后RHS(index = 0)完成。

答案 1 :(得分:1)

你的陈述给它指的是零。语句temp [index] = index = 0将零写入索引AND并进入temp [index]。这就是那个意思。将所有变量放在赋值运算符0的左侧。

答案 2 :(得分:1)

该行的作用是在temp[index]分配值indexindex应该等于0

这就是为什么这种语法大多不可接受的原因。它很难阅读,大多数人都不理解。

答案 3 :(得分:1)

您已将temp [1]和index指定为' 0' 它从左到右运行。 想想临时[index / * * /]