Как работает ++ в JAVA?
учу я.п. JAVA, в одном видео курсе человек привёл такой пример:
int a = 5;
int b = 3;
int c = a + b++;
System.out.println(b);
при выводе на экран переменная b выдаёт значение 4, НО 4 это значение переменной с, а в sout выводится переменная b, изначально ведь значение переменной b=3;.
Почему он мне выдаёт b++, а не b?
Ответы (4 шт):
Потому что b++ увеличивает значение b на единицу.
P.S. И значение с совсем не 4.
выражение b++; это инкремент. Означает, что мы используем текущее значение и после увеличиваем его на единицу.
int c = a + b++; // с = 5 + 3;
в следующей строке значение b=4
System.out.println(b); // b=4
b++ - это увеличение значения b на 1 и возврат значения b до этого увеличения
++b - это увеличение значения b на 1 и возврат нового значения
Соответственно
b = 999;
System.out.println(b++);
System.out.println(b);
даст вывод
999
1000
а
b = 999;
System.out.println(++b);
System.out.println(b);
даст вывод
1000
1000
Это все, что вам нужно знать об инкременте (с декрементом то же самое, только значение b уменьшается на 1, а не увеличивается).
Соответственно, когда вы в ЛЮБОМ контексте пишете b++, значение b увеличивается на 1 и возвращается ее значение до увеличения на 1.
Например, что выведет следующее?
int b = 1;
int a = b++ + b++ + ++b;
System.out.println(a + " " + b);
Для того, чтобы это узнать, поработаем компьютером.
Натыкаемся на первое b++. b теперь равен (то есть в ячейку памяти с переменной b записывается такое значение) 2. Возвращаем же 1 (то есть значение, которое b имело до увеличения на 1):
int a = 1 + b++ + ++b;
Натыкаемся на второе b++. b теперь равен 3. Возвращаем же 2:
int a = 1 + 2 + ++b;
Натыкаемся на ++b. b теперь равен 4. Возвращаем же 4 (то есть значение после увеличения на 1):
int a = 1 + 2 + 4;
Вывод тогда будет следующим:
7 4