Меняется трактовка ASCII из-за склеивания символов

Если написать так, то выводится 257:

public class Main {
    public static void main(String[] args) {
        System.out.print((char) 126 + (char) 94 + (char) 37);
    }
}

А если так, то ~^%:

public class Main {
    public static void main(String[] args) {
        System.out.print((char) 126);
        System.out.print((char) 94);
        System.out.print((char) 37);
    }
}

Почему?


Ответы (2 шт):

Автор решения: Эникейщик

Потому что в первом случае выводится сумма трёх чисел, а во втором три отдельных символа.

→ Ссылка
Автор решения: Vadik

В соответствии со спецификацией Java при суммировании двух примитивных char вы будете получать int.

Соответственно, в первом случае будет использован метод print(int), а во втором случае — print(char).

→ Ссылка