Помните, что JVM была создана для уменьшения размера кода для встраиваемых устройств (в основном) - это операционная система телеприставки.Я работал над несколькими встроенными java-платформами, и для них значение valueOf было бы более очевидным, в некоторых случаях это сэкономило бы немного места.
В основном метод существует, потому что "new"никогда не может использовать кэшированные экземпляры.valueOf МОЖЕТ быть реализовано для использования кэшированных экземпляров (в противном случае вы просто всегда использовали бы новый) и, скорее всего, делает это везде, где это экономит время.
Если они (или вы) заменили этот метод на тот, который фактически сделал кеширование значений, товесь ваш код получит преимущество от этого изменения, но без подготовки путем предоставления метода, такого как «valueOf», этого никогда не произойдет (ну, практически никогда - вы можете настроить исполнитель компилятора / байт-кода, чтобы «новые» возвращали кэшированные значения, ноЯ думаю, что это нарушит некоторые контракты)
Так что кеш - это не ложь, а состояние души.