Вывод объекта в Java — переопределение метода toString

Что будет, если просто передать объект в System.out.println()? По умолчанию Java выведет имя класса и хеш-код. Чтобы вывод был осмысленным, нужно переопределить метод toString().

Пример 1: программа на Java для печати объекта

class Test {

}

class Main {
  public static void main(String[] args) {

    // create an object of the Test class
    Test obj = new Test();

    // print the object
    System.out.println(obj);
  }
}

Вывод:

Test@512ddf17

В этом примере мы создали объект класса Test. При печати объекта получается необычный вывод.

Так происходит потому, что при печати объекта вызывается метод toString() класса Object. Он форматирует объект в виде по умолчанию:

Примечание

  • Test — имя класса

  • @ — соединительный символ

  • 512ddf17 — значение хеш-кода объекта

Если нужно отформатировать вывод по-своему, метод toString() следует переопределить внутри класса. Например:

class Test {

  @Override
  public String toString() {
    return "object";
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the Test class
    Test obj = new Test();

    // print the object
    System.out.println(obj);
  }
}

Вывод:

object

В этом примере вывод изменился, потому что мы переопределили метод toString(), чтобы он возвращал строку "object".

Совет

Подробнее о методе toString() класса Object можно почитать в справочнике по Object.toString().