Меняется трактовка 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).