Работа инкремента в Java

153
20 марта 2018, 01:09

Возник вопрос по поводу работы Java инкремента, я не могу понять логику как он считает его в этих выражения:

    int a = 5;
    int b = 5;
    int c = 5;
    int d = 5;
    int e = 5;
    int f = 5;
    a += a++; //10
    b += b++ + ++b + b++; //24
    c = c++ + c++; //11
    d = d++ + ++d + d++ + ++d; //28
    e += e++ + ++e + e++ + ++e; //33
    f = f++; //5

Самое важное это выражение с переменной a и f, хочется понять как это работае в JVM

Answer 1

Пошагово, на примере a += a++;

  1. Выражение транслируется в a = a + a++, далее правая часть вычисляется слева направо
  2. a = (5) + a++ - вычисляется первое значение
  3. a = (5) + (5)++ - вычисляется второе значение
  4. a++ - переменная a инкрементируется и становится равной 6
  5. a = (5) + (5) - считается вся правая часть, которая равна 10 и присваивается a
Answer 2

Чтобы понять это, вам нужно знать разницу между i++ и ++i. В первом случае сначала возвращаем значение i, а потом увеличиваем его на единицу, во втором - увеличиваем на единицу значение i и потом возвращаем его. После того как разберетесь с эти все будет ясно ;)

READ ALSO
JTable установка фокуса на ячейку

JTable установка фокуса на ячейку

Есть jtable (10строк 2 столбца), необходимо установить фокус на ячейку (примерно на 5 строку 1 столбца) Как сделать ?

154
пороговый персептрон

пороговый персептрон

Есть класс Перcептрон , для обучения использую данные из массива patterns и answers которые ввожу в ручную , все отлично работаетПри считывании из файла...

129
PhantomJS, Selenium можно ли только часть действий визуализировать

PhantomJS, Selenium можно ли только часть действий визуализировать

Selenium я уже использовал, но мне не совсем подходит то, что я вижу все эти промежуточные страницы и тот факт, что это настолько же медленно, если...

132
Черно-белое изображение в Canvas

Черно-белое изображение в Canvas

Для отображения объектов на холсте использую следующий View:

143