代码之家  ›  专栏  ›  技术社区  ›  fadedbee

Java的逗号分隔符-是否强制执行求值顺序?

  •  3
  • fadedbee  · 技术社区  · 9 年前

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

    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可以自由地重新排序这些操作吗?

    1 回复  |  直到 3 年前
        1
  •  4
  •   Bathsheba    9 年前

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

    注意,逗号运算符的优先级低于任何运算符。