Не работает выражение cont = cont++
Сам код:
public class ForDemo {
public static void main (String args[]){
int cont;
for (cont = 0; cont < 5; cont = cont++){
System.out.println("Значение счетчика:" + cont);
}
System.out.println("Готово");
}
}
Должно выводить:
> Значение счетчика:0
> Значение счетчика:1
> Значение счетчика:2
> Значение счетчика:3
> Значение счетчика:4
> Готово
Так выводит только при выражении cont = cont + 1
При двух плюсах уходит в бесконечность:
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Значение счетчика:0
Давай сначала. У тебя имеется постинкремент myValue++
. В таком случае состояние объекта (переменной) должно измениться, но при этом возвращено предыдущее состояние. Поэтому происходит три операции:
int temp = myValue
)++myValue
)return temp
)то есть:
operator++(int) {
int temp = myValue;
myValue = myValue + 1;
return temp;
}
Таким образом происходят действия и с cont
, а так как своё сохранённое состояние temp
в итоге возвращается в ту же переменную, то в итоге в нее всегда записывается ноль. В конце каждой итерации cont
равен нулю, условие цикла всегда получается 0 < 5
и получается бесконечный цикл.
Как итог: нужно писать либо просто cont++
либо просто ++cont
либо cont = cont + 1
.
Просто cont++
сработает потому, что оператор отработает, переменная увеличится, а return temp
будет делать некуда. Грубо говоря. И всё сработает как надо.
Ну или быть немного извращенцем и написать cont = ++cont
, т.к. преинкремент вначале увеличивает значение на 1 и потом возвращает.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочу написать метод который будет проверять два String на идентичностьПервый String будет содержать правильный ответ, а второй будет частично...
Я пытаюсь передать ArrayList стороннего класса в JSON для сохранения в sharedPreferences, а потом получить его обратноКонвертация списка в JSON происходит...
Есть таблица в базе mysql, в которой есть поле DATETIMEЭто поле может быть null