У меня есть следующий код:
class Example{
public static void main(String args[]){
System.out.println('1'+'1');
}
}
Почему он выводит 98
?
У меня есть следующий код:
class Example{
public static void main(String args[]){
System.out.println('1'+'1');
}
}
Почему он выводит 98
?
В Java каждый символьный литерал связан со значением ASCII, которое представляет собой Integer
.
Вы можете найти все значения ASCII здесь
'1'
соответствует значению ASCII 49 (тип int
).
таким образом, '1'
+ '1'
становится 49 + 49
, что является целым числом 98.
Если вы приведете это значение к типу char
, как показано ниже, оно напечатает значение ASCII 98, которое равно b
.
System.out.println( (char) ('1'+'1') );
Если вы стремитесь объединить 2 символа (это означает, что вы ожидаете "11"
из вашего примера), подумайте о том, чтобы сначала преобразовать их в строку. Либо с помощью двойных кавычек, "1" + "1"
, либо, как указано здесь.
'1'
является литералом char
, а оператор +
между двумя char
возвращает int
. Юникодное значение символа '1'
равно 49, поэтому, если вы добавите два из них, вы получите 98.
'1'
обозначает символ и соответствует соответствующему значению ASCII символа, которое равно 49 для 1
. Добавление двух из них дает 98.
49 — это значение ASCII, равное 1. Таким образом, '1' +'1'
равно 49 + 49 = 98
.
'1'
является литералом чата и представляет собой значение ASCII, равное 49, то есть сумма '1'+'1'=98
.
Здесь я делюсь таблицей ASCII
как изображение. Если вы считаете столбцы, начните с 0, поэтому 1
занимает 49-е место. Извините, я прилагаю изображение для лучшего объяснения.
'1'
— это литерал char
, а оператор + между двумя символами возвращает целое число. Юникодное значение символа «1» равно 49, поэтому 49 + 49
равно 98.