30/09/2018, 23:40

Hàm String toString trong java!?

Các sư huynh sư tỷ cho em hỏi ngu cái, trong hình phần khoanh tròn ấy!
Trong hầu hết các bài tập java cơ bản e học trên lớp đều thấy nó xuất hiện mà em không biết nó dùng để làm gì!
Thân ạ!

Nguyễn Xuân Phúc viết 01:42 ngày 01/10/2018

vì khi ta gọi hàm xuất thông tin object bằng System.out.print hay println, thì bản chất ở đây hàm sẽ gọi đến method toString của object để lấy value.
Mặc dù mặc định một số kiểu dữ liệu có default toString sẵn, và 1 class khi được tạo cũng có default toString nhưng hầu hết các trường hợp nó không hữu dụng, vì vậy nên mới phải override lại.
Ngoài ra còn dùng cho nhiều trường hợp khác nữa, nhưng cái thiết yếu dễ thấy nhất là ở việc xuất dữ liệu

Huynh Nguyen viết 01:48 ngày 01/10/2018

Cám ơn sư huynh ạ, sư huynh có tài liệu về java cơ bản ko, cho e xin đi, nếu ko cũng ko sao, em đang tự học môn này ạ! Thanks huynh nhiều!

Đỗ Trung Quân viết 01:53 ngày 01/10/2018

toString() là một method của lớp Object. Vì vậy tất cả class trong java đều kế thừa và có thể override method này

to - > String : Nhìn vào đây bạn cũng có thể hiểu là cái này sẽ biểu diễn 1 cái gì đó dưới dạng String. Và ở đây sẽ là các Object hay đối tượng

Nếu bạn không override method toString mặc định sẽ trả về tên class + ‘@’ + hashcode biểu diễn dưới dạng unsign hexadecimal của object

         public String toString(){
               return getClass().getName() + '@' + Integer.toHexString(hashCode());
         }
  

Ví dụ

public class Person {
         private name;
         private age;

         public Person(name, age){this.name = name, this.age = age}

          public static void main(String... a) { 
              Person person = new Person ("Đỗ Trung Quân", "25");
              System.out.println("Person.Tostring : " + person .toString());  
          } 
      }

Output -> Person.Tostring : Person@15db9742
Tên Class: Person + ‘@’ + hascode (hexadecimal)

bạn thấy có xấu không?

Vì vậy mình sẽ override lại method toString


public class Person{
         private name;
         private age;

         public Person(name, age){this.name = name, this.age = age}
         @Override
         public String toString(){
              return "Name:" + this.name+ "\nAge: " + this.age;
         }
         public static void main(String... a) { 
              Person person = new Person ("Đỗ Trung Quân", "25");
              System.out.println("Person.Tostring : " + person .toString());  
         } 
 }

->> output: Person.toString

Name: Đỗ Trung Quân
Age : 25

Bài liên quan
0