потому что x ++ увеличивает значение ПОСЛЕ присвоения его переменной.и так далее и во время выполнения этой строки:
x++;
переменная x будет по-прежнему иметь исходное значение (7), но снова использовать x в другой строке, например,
System.out.println(x + "");
даст вам 8.
, если вы хотите использовать увеличенное значение x в вашем операторе присваивания, используйте
++x;
Это увеличит x на 1, ТО затем присвойте это значениепеременная x.
[Edit] вместо x = x ++, это просто x ++;первый присваивает исходное значение x самому себе, поэтому он фактически ничего не делает в этой строке.