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());
}
}

浙公网安备 33010602011771号