有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中运算符的优先级

当我运行此Java代码时:

int[] a = new int[10];
    int i = 0,j = 0;
    while(i < 10){
        a[i++] = j+++j++;
    }
    System.out.println(Arrays.toString(a));

我作为输出获取:[1, 5, 9, 13, 17, 21, 25, 29, 33, 37]。 有人能解释一下a[i++] = j+++j++语句是如何解析的吗


共 (2) 个答案

  1. # 1 楼答案

    表达式j+++j++中的第一个j++递增j并返回其上一个值

    第二个j++递增j并返回其上一个值,即第一个j++递增后的值

    在下一次迭代开始时,j比上一次迭代开始时的值大两倍(因为上一次迭代增加了j两倍)

    因此:

    a[0] = 0++ + 1++ = 0 + 1 = 1;
    a[1] = 2++ + 3++ = 2 + 3 = 5;
    a[2] = 4++ + 5++ = 4 + 5 = 9;
    ...
    
  2. # 2 楼答案

    a[i++] = j++ + j++;
    i++翻译成使用i,然后增加i

    a[0 (i = 1)] = 0 (j = 1) + 1 (j = 2) = 1;
    a[1 (i = 2)] = 2 (j = 3) + 3 (j = 4) = 5;
    ..