【问题标题】:Assigning multiple values to an array in same statement在同一语句中为数组分配多个值
【发布时间】:2014-12-28 17:09:25
【问题描述】:

我下面有一个java代码sn-p:

int arr[] = new int[5];
int index = 0;
arr[index] = index = 3;

System.out.println("arr[0] = " + arr[0]);
System.out.println("arr[3] = " + arr[3]);

输出是:

arr[0] = 3
arr[3] = 0

第 3 行到底发生了什么?

【问题讨论】:

标签: java arrays variable-assignment


【解决方案1】:

Java 语言规范:

15.7 Java 编程语言保证运算符的操作数看起来是按特定的计算顺序计算的,即从左到右。

在这种情况下,首先评估arr[index],产生对元素零的引用。这是因为index 仍然是0。现在index = 3 得到评估,3 存储在索引中。现在第一个分配已经准备好完成,所以3 被分配给元素零。

为了清晰起见,Java 语言设计者建议避免依赖此规则,确保表达式只有一个副作用。但是,您的表达式有两个副作用,其中一个依赖于另一个的完成。

建议代码不要过度依赖本规范。当每个表达式最多包含一个副作用时,代码通常会更清晰,作为它的最外层操作,并且当代码不完全依赖于表达式从左到右求值的结果出现的异常时。 p>

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多