Java学习笔记88——Object类—类的最终写法

Object类——类的最终写法

​ public String toString()返回对象的字符串表示形式。
​ 一般来说, toString方法返回一个“textually代表”这个对象的字符串。
​ 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。
​ 该toString类方法Object返回一个由其中的对象是一个实例,
​ 该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。
​ 换句话说,这个方法返回一个等于下列值的字符串:
​ getClass().getName() + '@' + Integer.toHexString(hashCode())

​ Integer类中有一个toHexString方法将哈希值转换成地址值
​ public static String toHexString(int i)
​ 返回整数参数的字符串表示形式,作为16位中的无符号整数。

​ 我们虽然掌握了toString()的方法使用,但是呢打印的结果是一个地址值,我们拿到地址值是没有意义的

​ 我们正常打印一个对象,其实是想看该对象中的成员变量的值。
​ 又因为toString()方法的返回值是String类型,并且属于Object类中的
​ 而Object类是所有类的父类,那么我们自己定义类的时候,就可以重写该方法,重写里面的实现。
​ 将来调用toString()方法的时候,严格遵循编译看左,运行看右,所以调用的是重写后的方法。

类最终写法:4.0版本:
​ 成员变量:private
​ 构造方法:无参,有参
​ 成员方法:getXxx()和setXxx(),..
​ toString():自动生成即可(Code快捷键)

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

    public Student3() {
    }

    public Student3(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
//手动重写
//    @Override
//    public String toString() {
//        return  "姓名:" + name + ",年龄:" + age;
//    }

//Code快捷键重写
    @Override
    public String toString() {
        return "Student3{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class StudentTest2 {
    public static void main(String[] args) {
        Student3 s = new Student3();
        System.out.println(s.toString());//com.shujia.wyh.day18.Student3@4554617c
        System.out.println("*************************");
        System.out.println(s.getClass().getName());
        System.out.println("*****************************");
        //toString()方法等价于以下内容
        //getClass().getName() + '@' + Integer.toHexString(hashCode())
        //s.getClass().getName() + "@" + Integer.toHexString(s.hashCode())
        //this.getClass().getName() + "@" + Integer.toHexString(this.hashCode())

       // System.out.println(s.toString());
        //System.out.println(s.getClass().getName()+"@"+Integer.toHexString(s.hashCode()));

        s.setName("小花");
        s.setAge(18);
        System.out.println(s.toString());
    }
}
posted @ 2021-12-15 20:34  欧朋  阅读(60)  评论(0)    收藏  举报