Nội dung chính
Phương thức toString() trong java
Nếu bạn muốn đại diện bất kỳ đối tượng nào dưới dạng chuỗi. Bạn có thể sử dụng phương thức toString().
Phương thức toString() trả về chuỗi đại diện của đối tượng.
Khi bạn in đối tượng, nội bộ trình biên dịch java sẽ gọi phương thức toString() từ đối tượng đó và trả về kết quả mong muốn. Nó có thể là trạng thái của một đối tượng, vv phụ thuộc vào việc cài đặt của bạn.
toString() là một phương thức của lớp Object, có cú pháp như sau:
public String toString() { return getClass().getName()+"@"+Integer.toHexString(hashCode()); }
Lợi ích của phương thức toString() trong Java
Bằng việc ghi đề phương thức toString() của lớp Object, chúng ta có thể trả về giá trị của đối tượng.
Vấn đề khi không ghi đè phương thức toString() trong Java
Như bạn đã biết tất cả các lớp trong Java được kế thừa lớp Object.
Khi không ghi đè phương thức toString(), thì phương thức toString của lớp Object sẽ được gọi khi bạn muốn in đối tượng ra màn hình.
Ví dụ:
package vn.kienthuclaptrinh.string; public class Student { int rollno; String name; String city; Student(int rollno, String name, String city) { this.rollno = rollno; this.name = name; this.city = city; } public static void main(String args[]) { Student s1 = new Student(101, "Viet", "HaNoi"); Student s2 = new Student(102, "Nam", "DaNang"); // trình biên dịch sẽ ghi s1.toString() thay vì s1 // có nghĩa là khi khai báo s1 thì phương thức s1.toString() // được gọi System.out.println(s1); // trình biên dịch sẽ ghi s2.toString() thay vì s2 System.out.println(s2); } }
Output:
vn.kienthuclaptrinh.string.Student@15db9742 vn.kienthuclaptrinh.string.Student@6d06d69c
Khi ghi đề phương thức toString() trong Java
Kết quả trả về của phương thức toString() mặc định của lớp Object có vẻ như không có ý nghĩa gì với chúng ta. Do đó chúng ta nên ghi đè phương thức toString() để ghi ra những gì có ý nghĩa như trong ví dụ sau.
Ví dụ:
package vn.kienthuclaptrinh.string; public class Student { int rollno; String name; String city; Student(int rollno, String name, String city) { this.rollno = rollno; this.name = name; this.city = city; } // Ghi đè phương thức toString() public String toString() { return rollno + " " + name + " " + city; } public static void main(String args[]) { Student s1 = new Student(101, "Viet", "HaNoi"); Student s2 = new Student(102, "Nam", "DaNang"); // trình biên dịch sẽ ghi s1.toString() thay vì s1 // có nghĩa là khi khai báo s1 thì phương thức s1.toString() // được gọi System.out.println(s1); // trình biên dịch sẽ ghi s2.toString() thay vì s2 System.out.println(s2); } }
Output:
101 Viet HaNoi 102 Nam DaNang