Object 类的 toString方法和 equals方法

Object 类是所有 Java类的根基类,如果在类的声明中未使用 extends关键字指明其基类,则默认基类为 Object类。

例如:

toString方法

Object类的 toString方法返回一个字符串,该字符串由类名+标记@+此对象哈希码的无符号十六进制表示组成,比如:

Object 类 toString 源代码如下:

public String toString(){
  return getClass().getName()+"@"+Integer.toHexString(hashCode);
}

直接输出对象,跟输出对象调用 toString() 方法是一样的!

结果:

为了更方便的使用该方法,我们都是将 toString方法进行覆盖,然后打印我们想要的结果。举例:

------------------------------------------------------------------------------------

equals 方法

先说一下 “==” 的使用

等号“==”做比较使用,返回boolean类型值。

等号“==”在基本数据类型的使用中,比较的是值。

等号“==”在引用数据类型的使用中,比较的是内存地址。

虽然两对象中的属性值相同,但内存地址不同除非让两个引用类型变量,指向同一块地址。

注意字符串属于一种特殊的引用数据类型。由于在实际项目开发中会大量地使用字符串,所以比较占用内存。字符串是经过内存优化的一种存储方式,如果以前在内存中有字符串abc了,下面如果再创建一个引用,则默认指向的就是已再内存中存在的abc。

执行结果为:true

但是如果我们是new的形式来创建字符串,则结果就不同了:

执行结果为:false

--------------------------------------------------------------------------------------

Object类的equals方法

源码:是比较内存地址

public booelan equals(Object obj) { 

  return this==obj; 

下面重写了Object类的equals方法,不是比较内存地址了,而是比较属性值是否都相同

----------------------------------------------------------------------------------------------

String类的equals方法

源码:用来比较字符串的值是否相同时,与地址的概念没有任何关系。

案例:

posted @ 2022-03-26 16:01  鹿先森JIAN  阅读(78)  评论(0编辑  收藏  举报