Почему ('1'+'1') выводит 98 в Java?

У меня есть следующий код:

class Example{
    public static void main(String args[]){

        System.out.println('1'+'1');

    }
}

Почему он выводит 98?


person Robin    schedule 25.01.2020    source источник
comment
Связано: В Java результатом добавления двух символов является int или char? Я подозреваю, что этот вопрос является дубликатом. Точного оригинала пока не нашел.   -  person Ole V.V.    schedule 25.01.2020
comment
Какой результат вы ожидали (если у вас были какие-то ожидания)? 2? 11? Ошибка времени компиляции?   -  person Ole V.V.    schedule 25.01.2020
comment
Отвечает ли это на ваш вопрос? Есть ли разница между одинарными и двойными кавычками в Java?   -  person Matsemann    schedule 29.01.2020
comment
Также см. раздел Объединение символов для формирования строки в java, в котором рассказывается, как построить строку из символа.   -  person Martijn Pieters    schedule 27.02.2020


Ответы (6)


В 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", либо, как указано здесь.

person Arun Gowda    schedule 25.01.2020

'1' является литералом char, а оператор + между двумя char возвращает int. Юникодное значение символа '1' равно 49, поэтому, если вы добавите два из них, вы получите 98.

person Mureinik    schedule 25.01.2020
comment
Символьные литералы выглядят как односимвольные строки, но таковыми не являются. - person Thorbjørn Ravn Andersen; 25.01.2020

'1' обозначает символ и соответствует соответствующему значению ASCII символа, которое равно 49 для 1. Добавление двух из них дает 98.

person Anirban166    schedule 25.01.2020

49 — это значение ASCII, равное 1. Таким образом, '1' +'1' равно 49 + 49 = 98.

person Jahangir    schedule 25.01.2020

'1' является литералом чата и представляет собой значение ASCII, равное 49, то есть сумма '1'+'1'=98.

Здесь я делюсь таблицей ASCII как изображение. Если вы считаете столбцы, начните с 0, поэтому 1 занимает 49-е место. Извините, я прилагаю изображение для лучшего объяснения.

введите здесь описание изображения

person Muzzamil    schedule 25.01.2020

'1' — это литерал char, а оператор + между двумя символами возвращает целое число. Юникодное значение символа «1» равно 49, поэтому 49 + 49 равно 98.

person Wevaya    schedule 30.01.2020