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

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

Hashcode — це унікальний ідентифікатор для об'єкта, який зберігається в пам'яті. Ми також можемо переглянути хеш-код об'єкта, викликавши для нього метод 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

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

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

Hashcode — це унікальний ідентифікатор для об'єкта, який зберігається в пам'яті. Ми також можемо переглянути хеш-код об'єкта, викликавши для нього метод 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