Зачем это происходит? Он преобразует любой символ входной строки в верхний регистр. В вашем примере «любой символ» эквивалентен 0 символам.
Javadoc не говорит, что он должен терпеть неудачу для пустой строки, которое означает, что он не должен терпеть неудачу:
Преобразует все символы в этой строке в верхний регистр, используя правила языковой стандарт по умолчанию. Этот метод эквивалентен toUpperCase (Locale.getDefault()).
Примечание: Этот метод локаль чувствителен и может привести к непредсказуемым результатам, если используются для строк, которые предназначены для интерпретироваться языковой независимо друг от друга. Примерами являются идентификаторы языка программирования, протоколы и теги HTML. Например, «title» .toUpperCase() в турецком locale возвращает «T \ u0130TLE», где «\ u0130» - это ЛАТИНСКИЙ КАПИТАЛ ПИСЬМО I С ДВОЙНЫМ ВЫШИМ символом. Чтобы получить правильные результаты для нечувствительных к языку строк, используйте toUpperCase (Locale.ENGLISH).
Возврат: Строка, преобразованная в верхний регистр.
Хорошо! Спасибо за ответ ;) – GniruT