2013-06-25 3 views
3

У меня есть фрагмент Java, который выглядит следующим образом:Приращение символ в Java объяснения

char ch = 'A'; 
    System.out.println("ch = " + ch); 

который печатает: A

тогда, когда я делаю это

ch++; // increment ch 
    System.out.println("ch =" + ch); 

это сейчас отпечатков: B

Я также пробовал с Z и привел к [(открыть квадратные скобки)
и с - и привел к .


Как это случилось? Каким может быть это объяснение? Заранее спасибо.

ответ

9

Для символов 0 до 127, вы будете следовать набору ASCII символов.

enter image description here

Как вы можете видеть символ после (90) Z является (91) [ и характер после того, как (45) - является (46) .

Попробуйте

char ch = '-'; 
ch += '-'; // == (char) 90 or 'Z' 

или еще более причудливым

char ch = '0'; 
ch *= 1.15; // == (char) 48 * 1.15 = 54 or '6' 
+0

поэтому, когда я увеличил 'ch', какое значение оно увеличило? это 'dec, Hx,' или 'Oct'? –

+0

@ Þaw На самом деле это ни один из них. Символ является 16-битным двоичным значением, то есть имеет 16 бит. Вы можете отобразить это как «char», как вы видели, или как десятичный, или шестнадцатеричный, восьмеричный, но на самом деле это всего лишь набор бит. –

+0

ничего себе! Я попробовал то, что вы сделали, сэр, и это сработало, удивительно HAHA. жаль, что вы невежественны: D все еще много учится. –

3

Это происходит потому, что символ «char» является по существу числом в формате Unicode, в котором каждый введенный вами символ представлен числом. Это означает, что персонажа можно рассматривать как число, в котором можно добавить вычитаемое или что-то еще.

Для получения более подробной информации о конкретных отображениях попробовать here

1

Тип данных char - это один 16-разрядный символ Юникода. Он имеет минимальное значение '\ u0000' (или 0) и максимальное значение '\ uffff' (или 65535 включительно). Арифметические операции могут выполняться на char литералах, поскольку они представляют собой числовые значения, представляющие Unicode.

1

Это фактически увеличивает значения ascii. Значение s равно 65, а 66 - B. Снова значение Z составляет 90 и [равно 91

1

Char имеет численное представление символов. Если вы попытаетесь отдать его int, например int a = (int) 'A';, вы получите код char. Когда вы увеличиваете значение char, вы перемещаетесь вниз в ASCII table и получаете следующее значение таблицы.