Size: a a a

2020 November 15

..

... ... in learn.java
Dima
int i = 0;
 for(int k = 0; k < 100; k++) {
  i = i++;
  System.out.println(i);
 }
 System.out.println(i);
и будет выводить 0 в цикле?
источник

n.

ns ... in learn.java
Dima
int i = 0;
 for(int k = 0; k < 100; k++) {
  i = i++;
  System.out.println(i);
 }
 System.out.println(i);
И там и там будет 0
источник

J

Jegors in learn.java
ns ...
Может я не так спросил, ща попробую расписать:
мы имеем i=0  и  i=i++
то есть при первом шаге цикла i осталась 0, т.к у нас пост инкремент.
однако во временную записалось что переменная  i уже равна 1.
То есть если я правильно понял работу пост инкрементов, то при следующем обращении к переменной i, должно выдаваться уже новое значение i, равное 1.

Далее второй шаг цикла, снова видим i=i++;
Вот тут, на втором шаге, при вычислении правой части (i++), разве не должно учитываться, что значение i равно уже не 0, а 1, которое записалось во временной переменной, и присваиваться 1. А во временную переменную записываться уже 2 ?

Если нет, то тогда я не правильно себе представляю как работают пост инкременты...
Все. Правильно.
i = 0

i = i++ // пока i равно 0
i = (0 и мы увеличиваем i оно теперь 1)
i = (0) // у нас i уже 1 но теперь мы присваиваем ему 0
источник

D

Dima in learn.java
int i = 0;
 for(int k = 0; k < 100; k++) {
 int tmp = i; //0
  i = i + 1; //1
  i = tmp; //0
  System.out.println(i); //0
 }
 System.out.println(i); //0
источник

D

Dima in learn.java
... ...
и будет выводить 0 в цикле?
да
источник

D

Dima in learn.java
ns ...
И там и там будет 0
да
источник

D

Dima in learn.java
Dima
int i = 0;
 for(int k = 0; k < 100; k++) {
 int tmp = i; //0
  i = i + 1; //1
  i = tmp; //0
  System.out.println(i); //0
 }
 System.out.println(i); //0
@nsnurlan01 так понятней?
источник

n.

ns ... in learn.java
Dima
int i = 0;
 for(int k = 0; k < 100; k++) {
 int tmp = i; //0
  i = i + 1; //1
  i = tmp; //0
  System.out.println(i); //0
 }
 System.out.println(i); //0
да, появился свет в конце туннеля )))
то есть у нас идет постоянное переписывание во временную переменную с 0 на 1...
я так понял..
источник

D

Dima in learn.java
ns ...
да, появился свет в конце туннеля )))
то есть у нас идет постоянное переписывание во временную переменную с 0 на 1...
я так понял..
верно
источник

D

Dima in learn.java
из-за i = i++
источник

D

Dima in learn.java
и i++ я тебе расписал выше через временную переменную, чтобы ты механизм пост инкремента понимал
источник

D

Dima in learn.java
и почему перезапись идет
источник

n.

ns ... in learn.java
Dima
и почему перезапись идет
вроде теперь разобрался. спс.
источник

D

Dima in learn.java
ns ...
вроде теперь разобрался. спс.
для закрепления запусти это:

int i = 0;
 for(int k = 0; k < 100; k++) {
  i++;
  System.out.println(i);
 }
 System.out.println(i);
источник

GV

Gukov Viktor in learn.java
Maxim Borisov
разве можно делать дженерики масивы?
Можно, но категорически не рекомендуется
источник

GV

Gukov Viktor in learn.java
Высокая вероятность выстрелить себе в ногу
источник

M

Maxim Borisov in learn.java
Gukov Viktor
Можно, но категорически не рекомендуется
можешь кратко описать из за чего? у меня в голове с java rush сидит инфа что это невозможно. но тут кидают что  все  норм.
источник

GV

Gukov Viktor in learn.java
Maxim Borisov
можешь кратко описать из за чего? у меня в голове с java rush сидит инфа что это невозможно. но тут кидают что  все  норм.
Если кратко: можно выстрелить исключением в рантайме из-за неаккуратных действий с несовместимыми типами.
Чтобы было более понятно можно Тагира послушать (конкретный тайминг):
https://youtu.be/usiKCn7SwxI?t=5641
источник

M

Maxim Borisov in learn.java
ничего ты добрый . спасибо
источник

M

Maxim Borisov in learn.java
вот еще норм примерчик на тему инкремента
источник