[英]Assignment operator explanation in Java
public class Conversions {
public static void main(String[] args) {
int index = 3;
int[] arr = new int[] { 10, 20, 30, 40};
arr[index] = index = 2; //(1)
System.out.println("" + arr[3] + " " + arr[2]);
}
}
我有这个,它给了:
2 30
我希望它能给予
40 2
在(1)为什么赋值中的索引值没有变为2(并保持为3)。 ?
如果左侧操作数是一个数组访问表达式(第15.13节),可能包含在一对或多对括号中,则:
首先,评估左侧操作数数组访问表达式的数组引用子表达式。 如果此评估突然完成,则赋值表达式出于同样的原因突然完成; 不评估索引子表达式(左侧操作数数组访问表达式)和右侧操作数,也不进行赋值。
否则,将评估左侧操作数数组访问表达式的索引子表达式 。 如果此评估突然完成,则赋值表达式会出于同样的原因突然完成,并且不会评估右侧操作数并且不会进行赋值。
否则,将评估右侧操作数 。 如果此评估突然完成,则赋值表达式会出于同样的原因突然完成,并且不会发生任何分配。
[...](进一步解释)
如您所见,索引在赋值的右侧之前进行了求值。
arr[index]
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.