Если я правильно понял, ваш вопрос означает, почему мы не можем создать объект, непосредственно присвоив ему значение, давайте не будем ограничивать его классом Wrapper of String в java.
Чтобы ответить на этот вопрос, я бы просто сказал, что чисто объектно-ориентированные языки программирования имеют некоторые конструкции и говорят, что все литералы, если они написаны отдельно, могут быть непосредственно преобразованы в объект данного типа.
Это точно означает, что если интерпретатор видит 3, он будет преобразован в объект типа Integer, поскольку целое число - это тип, определенный для таких литералов.
Если интерпретатор видит какую-либо вещь в одинарных кавычках, например 'a', он непосредственно создаст объект типа символ, вам не нужно указывать его, поскольку язык определяет для него объект по умолчанию типа символ.
Точно так же, если интерпретатор видит что-то в "", он будет рассматриваться как объект его типа по умолчанию, т.е. строки. Это некоторый нативный код, работающий в фоновом режиме.
Благодаря видеокурсу MIT 6.00, где я получил подсказку для этого ответа.