一丶GetClass()
1.方法被final修饰,并且不允许子类的覆盖。
2.作用:获取创建的引用中实际对象的存储类型。
3.在实际开发中,用==判断两边存储的类型是否一致,返回一个boolean值,
例:System.out.println("a.getClass()==b.getclass()");这里a b是两个引用;
4.跟instanceof还是有区别的 instanceof 是判断前面的类型是否兼容于后面的类型。
二丶int hashCode();
1.hashcode() 没有被final 修饰,允许子类覆盖;
2.返回的值是对象的哈希码值(返回的类型是一个int整数);
3.Object中的hashCode方法哈希码值来源:将对象再内存的中的十六进制的地址转换为十进制的整数
4.由于不同对象堆空间中的地址不同,所以不同对象有不同的哈希码值;
三丶String toString()
1.没有被final修饰,允许子类的覆盖;
2.应用:通常覆盖toString 然后展示对象信息
覆盖原则:将所有的对象的属性拼接的为String进行展示;
3.get方法和toString的方法的区别:
get可以获取所有属性的信息,然后不改变对象的数据类型
toString将对象中的属性拼接字符串,然后作为返回值进行输出;
四丶boolean equals(Objiect obj)
- 没有被final修饰,允许子类覆盖;用于判断两个对象内容是否相等,返回一个boolean值;
- 与==的区别:==两端连接的是一种是基本数据类型 ,判断两端的值是否相等;
- 另一种是 两端为引用类型 用于判断两边引用的地址是否相等;
- 源码分析:
System.out.println(s.equals(s2));
Public Boolean equals(Object obj){
If(this==obj){
Return true;//判断两个指针是否指向一个对象;
}
If(obj==null){
Return false;//判断obj是否为null;
}
If(this.getClass()!=obj.getClass()){
Return false;
}
强制类型转换:
If(this.数据==转换后的数据,&&对应进行判断){
Return true;
}
}
补充 ==:如果两端为基本数据类型 判断值是否相等
如果两端为为引用 判断两边引用地址是否相等,是否指向同一个对象;
Equals:用于判断两个对象的内容是否相等(需要覆盖)