2014-11-19 3 views
0

Я выполнял следующий кодприрост Java Char

class First 
{ 

public static void main(String arg[]) 
     { 
      char x= 'A'; 
      x = x++; 
      System.out.println(x); 
     } 
} 

Вот вывод: A. Мой вопрос, почему не х было получить приращение перед печатью.

+0

Что делать, если ваша строка 'x = x ++;' просто указана 'x ++;'? Что происходит тогда? –

+0

Он сделал. Тем не менее, он не увеличивался до * назначения *. –

ответ

3

Неправильно используется оператор post-increment - вам также не нужно использовать назначение. И в этом случае это подрывает то, что вы пытаетесь сделать.

Для контекста помните, что оператор post-increment увеличивает значение, и возвращает старое значение. То есть, x++ примерно эквивалентен:

int x_initial = x; 
x = x + 1; 
return x_initial; 

Надеется, что теперь вы можете понять, почему ваш код не удается изменить x. Если развернуть его, он выглядит следующим образом:

char x= 'A'; 
char y; 
{ 
    y = x; 
    x = x + 1; 
} 
x = y; 
System.out.println(x); 

и чистый эффект задания, чтобы установить x обратно к тому, что он был изначально.


Чтобы исправить - вы можете просто позвонить x++. Или, если вы хотите дать понять, что происходит какое-то задание, x += 1 или даже просто x = x + 1 будет делать то же самое.

2
class First 
{ 

public static void main(String arg[]) 
     { 
      char x= 'A'; 
      x = x++; // it is post increment as ++ sign is after x 
      System.out.println(x); 
     } 
} 

Post Increment (x ++): сначала выполните инструкцию, а затем увеличьте значение на единицу.

Pre Increment (++ x): сначала увеличьте значение на единицу, затем выполните инструкцию.