小编典典

是否首先评估数组索引或赋值?

java

如果我有以下代码:

array[index] = someValue;

请问someValueindex会首先评估?


阅读 216

收藏
2020-11-19

共1个答案

小编典典

首先评估索引。请参阅JLS第15.26.1节,尤其是:

15.26.1。 简单赋值运算符=

如果左侧操作数是数组访问表达式(第15.13节),可能包含在一对或多对括号中,则:

1.
首先,评估左侧操作数数组访问表达式的数组引用子表达式。如果该评估突然完成,则赋值表达式由于相同的原因而突然完成;(左操作数数组访问表达式的)索引子表达式和右操作数不求值,并且不发生赋值。

2.
否则,将评估左侧操作数数组访问表达式的index子表达式。如果该评估突然完成,则由于相同的原因,赋值表达式会突然完成,并且不会评估右侧操作数并且不会发生赋值。

  1. 否则,将评估右侧操作数。如果该评估突然完成,则赋值表达式由于相同的原因而突然完成,并且不会发生赋值。

TL; DR :顺序为 1 [2] = 3

2020-11-19