Java 的逗号分隔符 - 它会强制执行评估顺序吗?

Java's comma separator - does it force an evaluation order?

我正在编写一个循环以从字节数组中生成多个片段,其中第一个片段的大小必须与后面的片段不同。

for (int frag_start = 0, frag_end = Math.min(len, MAX_FIRST_FRAG_SIZE);
     frag_start < len;
     frag_start = frag_end, frag_end = Math.min(len, frag_start + MAX_LATER_FRAG_SIZE)) {
     // code goes here
}

frag_start = frag_end, frag_end = ... 中的逗号是否强制逗号之前的赋值始终发生在逗号之后的赋值之前,或者 JVM 是否可以自由地重新排序这些操作?

在Java中,逗号运算符,分隔的表达式的求值严格从左到右。逗号内的每个表达式在移动到下一个之前都会被完全评估。

请注意,逗号运算符的优先级是所有运算符中最低的。