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中,逗号运算符,
分隔的表达式的求值严格从左到右。逗号内的每个表达式在移动到下一个之前都会被完全评估。
请注意,逗号运算符的优先级是所有运算符中最低的。
我正在编写一个循环以从字节数组中生成多个片段,其中第一个片段的大小必须与后面的片段不同。
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中,逗号运算符,
分隔的表达式的求值严格从左到右。逗号内的每个表达式在移动到下一个之前都会被完全评估。
请注意,逗号运算符的优先级是所有运算符中最低的。