Метод toString()
Як легко вивести об'єкт на екран
Для відображення всіх даних об'єкта за допомогою команди System.out.println(object); у Java існує метод toString();.
toString()
Метод toString у Java — це вбудований метод, який належить до класу Object. Він використовується для повернення рядкового представлення об'єкта. За замовчуванням, коли ми викликаємо toString для об'єкта, він повертає рядок, що містить назву класу та хеш-код об'єкта.
Розглянемо приклад:
Main.java
1234567891011121314151617181920package 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
123456789101112131415161718192021package 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
1234@Override public String toString() { // block of code }
Ми використовуємо анотацію @Override перед цим методом. Завдяки цій анотації компілятор розпізнає, що ми перевизначаємо цей метод. Далі вказуємо синтаксис public String toString(), що означає, який саме метод ми перевизначаємо.
У тілі цього методу ми визначаємо, як наш об'єкт має бути представлений у вигляді рядка. Перевизначимо метод для класу Person:
Person.java
12345678910111213141516171819class 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
12345678910111213141516171819202122232425262728package 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
123456789101112131415161718192021222324252627282930package 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()?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Метод toString()
Свайпніть щоб показати меню
Як легко вивести об'єкт на екран
Для відображення всіх даних об'єкта за допомогою команди System.out.println(object); у Java існує метод toString();.
toString()
Метод toString у Java — це вбудований метод, який належить до класу Object. Він використовується для повернення рядкового представлення об'єкта. За замовчуванням, коли ми викликаємо toString для об'єкта, він повертає рядок, що містить назву класу та хеш-код об'єкта.
Розглянемо приклад:
Main.java
1234567891011121314151617181920package 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
123456789101112131415161718192021package 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
1234@Override public String toString() { // block of code }
Ми використовуємо анотацію @Override перед цим методом. Завдяки цій анотації компілятор розпізнає, що ми перевизначаємо цей метод. Далі вказуємо синтаксис public String toString(), що означає, який саме метод ми перевизначаємо.
У тілі цього методу ми визначаємо, як наш об'єкт має бути представлений у вигляді рядка. Перевизначимо метод для класу Person:
Person.java
12345678910111213141516171819class 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
12345678910111213141516171819202122232425262728package 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
123456789101112131415161718192021222324252627282930package 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()?
Дякуємо за ваш відгук!