大家近来都在干嘛鸭!!有没有想小北嘞,嘿嘿嘿
今天小北要给大家分享的是Object类
首先当然是上我们的思维导图啦,大家来看看我们今天都要了解什么呢:
今天我们从两个方面来学习object类
【1】什么是Object类嘞?
object类是一个特殊的类,为什么这样说呢,因为Object是所有类的父类,如果没有一个类用extends明确的指出它的父类,那么它就默认继承的是Object类 ,即Object是所有类的基类。
【2】这里我们介绍Object类的几个方法
1)public int hashCode()
1*----首先我们来说一下hashCode,hashCode是jdk根据对象的地址或字符串或者数字算出来的int型的数值
----在java应用程序执行期间,在同一个对象多次调用hashCode方法时,它所返回的整数必须是相同的(前提是hashCode在比较时所用的信息没有被改变)
----如果两个对象相同,equals方法一定返回true,并且这两个对象的hashCode一定相同。即使两个对象的hashCode返回结果相同,两个对象的equals方法也不一定相等
----hashCode主要是用于查找的快捷性,经常用于确定对象的存储地址
----如果对象的equals方法被重写,那么对象的hashCode也尽量重写
2*这样hashCode应该不是很容易理解,小北给大家举个例子吧
package eastos.demo.hashcode.hashcode;
public class hashCode {
public static void main(String[] args) {
hashCode hashcode1 = new hashCode();
hashCode hashcode2 = new hashCode();
//new 的两个hashCode数据地址,数据等不相同,因此它们的哈希码值也不同
System.out.println(hashcode1==hashcode2);//判断两者的哈希值是否相等
}
}
结果小北给大家截粗来喵~
当然每new一个Object,JVM都会将这个Object放到哈希表里,每次取这个值,都会根据hashCode去哈希表中取,这样就会提高程序的效率
2)public final Class getClass()
class person{
private String name;
public void setname(String name){
this.name=name;
}
}
public class getClass {
public static void main(String[] args) {
//返回此Object类的运行时类
Object person1 = new person();
System.out.println(person1.getClass());
}
}
结果是返回该类对象(好了,这次我知道我画的很难看了,不开熏,嘤嘤嘤)返回的这个类对象就是person
3)public String toString()
toString方法返回的是该对象的字符串表示
比如:最简单的toString:
public class Tostring {
public static void main(String[] args) {
Object object3 = new Object();
Object object4 = new Object();
System.out.println(object3.toString());
System.out.println(object4.toString());
//toString默认返回的是该对象实现类的“类名+@+hashcode”值,这个值不能实现自我描述功能,故需要重写其toString方法来实现
}
}
结果如下:
显然这种toString方法的使用意义不太大,要使其更好的使用,我们需要对toString()类进行改写
小北改写如下:
class Cat{
private String name;
public void setname(String name){
this.name=name;
}
public String toString(){
return "小H";
}
}
public class Tostring {
public static void main(String[] args) {
Cat object3 = new Cat();
Cat object4 = new Cat();
System.out.println(object3.toString());
System.out.println(object4.toString());
//toString默认返回的是该对象实现类的“类名+@+hashcode”值,这个值不能实现自我描述功能,故需要重写其toString方法来实现
}
}
当然大家应该能猜到我们将toString方法改写之后的结果啦
4)public boolean equals(Object obj)
equals方法是默认的判断2个对象是否相等的方法,在Object类里有实现,判断的是2个对象的内存地址。即比较两个对象的地址值是否相等
public class equalsdemo {
public static void main(String[] args) {
Object object1 = new Object();
Object object2 = new Object();
object1.equals(object2);//比较两个地址值是否相同
System.out.println(object1.toString());
System.out.println(object2.toString());
}
}
返回两个对象的地址值: