类层次结构的根类
所有类都直接或间接的继承自该类
构造方法:
public Object{}
hashCode()方法,返回此对象的哈希码值
hashcode就是一个地址值
public class dd{
public static void main(String[] args) {
Student s=new Student("张三",23);
Object obj=new Object();
int hashcode =obj.hashCode();
System.out.println(hashcode);
System.out.println(s.hashCode());
}
}
getClass方法,返回此对象的运行时类
package com;
public class hello {
public static void main(String[] args) {
Student s=new Student("张三",23);
//Class clazz =new Class();
Class clazz=s.getClass(); //获取该对象的字节码文件
String name =clazz.getName(); //获取名称
System.out.println(name);
}
}
运行结果
toString():
package demo;
import com.Student;
public class ToString {
public static void main(String[] args) {
Student s=new Student("张三",23);
//String str=s.toString();
//System.out.println(str);
//System.out.println(s.toString);
System.out.println(s);
//如果直接打印对象的引用,会默认调用toString()方法
}
}
运行结果:
/* 左边:类名
中间:@
右边:hashCode的十六进制表现形式
这么写没有什么实际意义
toString方法的作用:可以更方便的显示属性值
*/
在Student中重写方法toString
public String toString() {
return "我的姓名是"+name+"我的年龄是"+age;
}
equals():比较返回true or false要重写方法,否则直接使用比较的是地址值,要注意的是,重写是传进去的是父类对象,不能调用子类中特有的属性,需要向下转型
import com.Student;
public class ToString {
public static void main(String[] args) {
Student s1=new Student("张三",23);
Student s2=new Student("张三",23);
boolean b=s1.equals(s2); //比较两个对象是否相等
System.out.println(b);
}
重写代码部分
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Student s=(Student)obj;
return this.name.equals(s.name) && this.age==s.age;
}
运行结果: