Способ, которым это достигается в Java, на самом деле немного проще, чем другие ответы.
Использование оператора конкатенации строк со строкой и объектом приводит к вызову метода toString()
этого объекта, а затем выполняет конкатенацию строк.
Помните, что всякий раз, когда примитив передается в контекст, где объект будет действительным, Java выполняет «автобокс», преобразовывая int
в Integer
, double
в Double
и т. Д.
Таким образом, вы можете думать об этом как о автобоксе с последующим toString () и последующей конкатенацией строк.
В то же время вы должны понимать, что спецификация конкатенации строк JLS позволяет реализациям JVM оптимизировать автобокс при условии, что результат тот же, поэтому вместо этого ваша JVM может использовать StringBuilder или использовать любой другой действительный байт-код JVM для создания результирующей строки, поэтому производительность оператора конкатенации строк часто оказывается лучше, чем выполнение самоблокировки.