java 中为什么重写toString()方法

toString()方法 一般出现在System.out.println(类名.toString());

toString()是一种自我描述方法 本身返回的是 getClass().getName() + “@” +Integer.toHexString(hashCode());

也就是 类名 + @ +hashCode的值

重写toString() 只会对类生效,并不能字符串生效; 例如

public class pratise {
     
 2     String num="aaaa";
 3     public String toString(){
     
 4         return num;
 5     }
 6    public static void main(String[] args){
     
 7        String s1="111";
 8        System.out.println(s1.toString()); 
 9        //输出111 而并非aaaa;
10    }
11 }

重写toString()对类生效

public class Parent {
     
    private int age;
    private String name;

    //重写toString()
    @Override
    public String toString() {
     
        return "Parent{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public static void main(String[] args) {
     
        //可直接返回属性值方便调试
        System.out.println(new Parent().toString());
    }
}


输出结果
java 中为什么重写toString()方法_第1张图片
假如不对toString()进行重写则 输出结果:
com.kuang.demo.Parent@74a14482
即为 类名 + “@” +hashCode值

为什么会这样
在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个hashcode码不能简单明了的表示出对象的属性。所以要重写toString()方法。
当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法。
默认情况下 System.out.println(对象名)或者System.out.println(对象名.toString())输出的是此对象的类名和此对象对应内存的首地址如果想自定义输出信息必须重写toString()方法。

注意事项:

1.必须被声明为public

2.返回类型为String

3.方法的名称必须为toString,且无参数

4.方法体中不要使用输出方法System.out.println()

你可能感兴趣的:(java)