Ваш лучший друг является JLS:
15.18.2. Аддитивные операторы (+ и -) для числовых типов
Бинарный оператор + выполняет сложение, когда применяется к двум операндам числового типа, производя сумму операндов.
Двоичное числовое продвижение выполняется в операндах (§5.6.2).
Для объяснения "операнды числового типа":
4.2.Примитивные типы и значения
Числовые типы являются интегральными типами и типами с плавающей точкой.
Совокупные типы представляют собой байтовые, короткие, int и long, ... и символы, значения которых представляют собой 16-разрядные целые числа без знака, представляющие кодовые единицы UTF-16 (§3.1).
И объяснить "Двоичное цифровое продвижение":
5.6.2. Binary Числового Promotion
Когда оператор применяет двоичную цифровую продвижение к паре операндов, каждый из которых должен обозначать значение, которое конвертируется в числовой тип, то применяются следующие правила, в следующем порядке:
Если какой-либо операнд имеет ссылочный тип, он подвергается распаковке преобразования (п. 5.1.8).
Widening примитивные преобразования (§5.1.2) применяется для преобразования либо или оба операнда, как указано по следующим правилам:
Если один из операндов имеет тип двойной, а другой преобразуется в двойной.
В противном случае, если любой из операндов имеет тип float, другой конвертируется для плавания.
В противном случае, если один из операндов имеет длинный тип, другой конвертируется в длинный.
В противном случае оба операнда преобразуются в тип int.
(курсив мой)
Так как ИНТ и полукокс числовые типы, они подвергаются двоичный цифровой преобразование, которое преобразует символ в целое число с помощью UTF-16.
Это не имеет никакого отношения к 'println()'. Правила - это обычные правила Java. – EJP
Возможно, вы захотите выбрать ответ и пометить его как решение (зеленая галочка). – user1803551