Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Метод toString() | Класи
Java Розширений

bookМетод toString()

Як легко вивести об'єкт на екран

Для відображення всіх даних об'єкта за допомогою команди System.out.println(object); у Java існує метод toString();.

toString()

Метод toString у Java — це вбудований метод, який належить до класу Object. Він використовується для повернення рядкового представлення об'єкта. За замовчуванням, коли ми викликаємо toString для об'єкта, він повертає рядок, що містить назву класу та хеш-код об'єкта. Розглянемо приклад:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }

Хеш-код

Хеш-код — це у простих словах унікальний ідентифікатор об'єкта, який зберігається в пам'яті. Ми також можемо побачити хеш-код об'єкта, викликавши для нього метод hashCode(), наприклад:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }

У такому випадку виникає питання: як отримати щось більш конкретне замість хеш-коду об'єкта? Для таких ситуацій можна перевизначити метод toString().

Успадкування та перевизначення методів — це об'ємні теми, які ми розглянемо в окремому курсі. Наразі ми будемо використовувати перевизначення методу лише для toString().

Як використовувати toString()

Щоб перевизначити метод, потрібно використати наступний синтаксис:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Ми використовуємо анотацію @Override перед цим методом. Завдяки цій анотації компілятор розпізнає, що ми перевизначаємо цей метод. Далі вказуємо синтаксис public String toString(), що означає, який саме метод ми перевизначаємо.

У тілі цього методу ми визначаємо, як наш об'єкт має бути представлений у вигляді рядка. Перевизначимо метод для класу Person:

Person.java

Person.java

copy
12345678910111213141516171819
class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Команда System.lineSeparator() використовується для створення нового рядка. Ми визначили, як має виглядати наш об'єкт, об'єднуючи рядки з їх значеннями. Тому, коли ми спробуємо вивести об'єкт класу Person, побачимо детальну інформацію про кожне поле. Виведемо об'єкт за допомогою методу main і подивимось, як це виглядає:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Ми отримали інформацію про клас, до якого належить об'єкт bob, а також деталі щодо всіх його полів. Таким чином, можна перевизначити та визначити метод toString(), щоб відображати потрібну інформацію під час виведення об'єкта. Створимо ще один об'єкт цього класу за допомогою конструктора, щоб побачити й закріпити, як метод toString() трансформує об'єкт:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }

Можна побачити, що новий об'єкт alice відображається в консолі за тим самим шаблоном.

Висновок

Використовуючи метод toString(), значно спрощено процес виведення інформації про об'єкт на екран, що дозволяє зекономити місце в основному методі.

1. Навіщо потрібен метод toString()?

2. Яку анотацію слід використовувати над методом toString()?

question mark

Навіщо потрібен метод toString()?

Select the correct answer

question mark

Яку анотацію слід використовувати над методом toString()?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 8

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you show an example of how to override the toString() method in a class?

What happens if I don't override the toString() method?

Can you explain more about method overriding and inheritance?

Awesome!

Completion rate improved to 2.63

bookМетод toString()

Свайпніть щоб показати меню

Як легко вивести об'єкт на екран

Для відображення всіх даних об'єкта за допомогою команди System.out.println(object); у Java існує метод toString();.

toString()

Метод toString у Java — це вбудований метод, який належить до класу Object. Він використовується для повернення рядкового представлення об'єкта. За замовчуванням, коли ми викликаємо toString для об'єкта, він повертає рядок, що містить назву класу та хеш-код об'єкта. Розглянемо приклад:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }

Хеш-код

Хеш-код — це у простих словах унікальний ідентифікатор об'єкта, який зберігається в пам'яті. Ми також можемо побачити хеш-код об'єкта, викликавши для нього метод hashCode(), наприклад:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }

У такому випадку виникає питання: як отримати щось більш конкретне замість хеш-коду об'єкта? Для таких ситуацій можна перевизначити метод toString().

Успадкування та перевизначення методів — це об'ємні теми, які ми розглянемо в окремому курсі. Наразі ми будемо використовувати перевизначення методу лише для toString().

Як використовувати toString()

Щоб перевизначити метод, потрібно використати наступний синтаксис:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

Ми використовуємо анотацію @Override перед цим методом. Завдяки цій анотації компілятор розпізнає, що ми перевизначаємо цей метод. Далі вказуємо синтаксис public String toString(), що означає, який саме метод ми перевизначаємо.

У тілі цього методу ми визначаємо, як наш об'єкт має бути представлений у вигляді рядка. Перевизначимо метод для класу Person:

Person.java

Person.java

copy
12345678910111213141516171819
class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Команда System.lineSeparator() використовується для створення нового рядка. Ми визначили, як має виглядати наш об'єкт, об'єднуючи рядки з їх значеннями. Тому, коли ми спробуємо вивести об'єкт класу Person, побачимо детальну інформацію про кожне поле. Виведемо об'єкт за допомогою методу main і подивимось, як це виглядає:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

Ми отримали інформацію про клас, до якого належить об'єкт bob, а також деталі щодо всіх його полів. Таким чином, можна перевизначити та визначити метод toString(), щоб відображати потрібну інформацію під час виведення об'єкта. Створимо ще один об'єкт цього класу за допомогою конструктора, щоб побачити й закріпити, як метод toString() трансформує об'єкт:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }

Можна побачити, що новий об'єкт alice відображається в консолі за тим самим шаблоном.

Висновок

Використовуючи метод toString(), значно спрощено процес виведення інформації про об'єкт на екран, що дозволяє зекономити місце в основному методі.

1. Навіщо потрібен метод toString()?

2. Яку анотацію слід використовувати над методом toString()?

question mark

Навіщо потрібен метод toString()?

Select the correct answer

question mark

Яку анотацію слід використовувати над методом toString()?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 8
some-alt