Что произойдёт при конкатенации строки с результатом вызова Integer.toString() в Java?

«Что произойдёт при конкатенации строки с результатом вызова Integer.toString() в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Результатом будет новая строка, содержащая строковое представление числа, объединённое с другой строкой. Оператор + для конкатенации вызывает String.valueOf() для каждого операнда, поэтому явный вызов toString() избыточен.

Пример:

Integer num = 42;
String result = num.toString() + " is the answer";
System.out.println(result); // Вывод: "42 is the answer"

Критические нюансы:

  • NullPointerException — если переменная Integer равна null, вызов num.toString() приведёт к NPE.
  • Создание объектов — каждая конкатенация создаёт новый объект String в куче. Для многократных операций используйте StringBuilder.

Рекомендуемые и безопасные альтернативы:

  1. Использование String.valueOf() (защита от NPE):
    String result = String.valueOf(num) + " text"; // Для null вернёт "null"
  2. Прямая конкатенация (компилятор сам вызовет toString()):
    String result = num + " text"; // Эквивалентно String.valueOf(num) + " text"
  3. Использование StringBuilder для производительности:
    String result = new StringBuilder().append(num).append(" text").toString();