Java学习之Object类

大家近来都在干嘛鸭!!有没有想小北嘞,嘿嘿嘿

今天小北要给大家分享的是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());

    }
}

返回两个对象的地址值:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值