Java面向对象中 Object类的详解和其中的equals()和toString()方法的详解

简介: Java面向对象中 Object类的详解和其中的equals()和toString()方法的详解

java.lang.Object类

  1. object类是所有java类的父类。
  2. 如果在一个类的声明中,未使用extends 关键字指明其父类,则默认java.lang.Object为父类。
  3. Object中(属性,方法)就具有通用性 Object中:无属性 方法:equals(),toString(),getClass(),hashCode(),clone(),finalize(),wait(),notify(),notifyAll().

Object类中主要结构如下图:

其中equals()和toString()方法很常用。 下面会详细展开说明:

5. Object类当中只声明了一个空参的构造器。

问题:

"=="和equals()的区别:

"=="的使用:

运算符

  1. 可以使用在基本数据类型变量中和引用数据类型变量中。
  2. 如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等(不一定类型要想同)。

Example:

public static void main(String[] args) {
        //基本数据类型
        int a=20;
        int b=20;
        System.out.println(a==b);//输出结果true
        char c=20;
        System.out.println(a==c);//输出结果true
        char d='A';
        char e=65;
        System.out.println(d==e);//输出结果true
    }

如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。

Example:

//引用数据类型
        Person  p1 = new Person("Lucy",30);
        Person  p2=new Person("Marry",20);
        System.out.println(p1==p2);//输出结果false

补充:"=="符号使用时,等号两边的变量类型要保持一致。

equals()方法的使用:

1、是一个方法,而非运算符。

2、只能适用于引用数据类型

3、Object类中equals()的定义:

public boolean equals(Object obj) {
        return (this == obj);
    }

说明:Object类中定义的equals()和“==”的作用是相同的,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象的实体。

4、像String,Date,File,包装类等都重写了Object类中的equals()方法。重写以后比较的不是地址,而是比较两个对象的“实体内容”是否相同。

5、通常情况下,我们自定义的类如果使用equals()的话,不是想比较地址,而是想比较对象的“实体内容”是否相同。那么我们就需要对Object类中的equals()方法进行重写。

重写的原则:比较对象的实体内容是否相同。添加重写的方法:用快捷键

ALT+INSERT 选择equals重写即可。

Object类中toString的使用:

1.当我们输出一个对象的引用时,实际上就是调用当前对象的toString()。

2.Object类中toString()的定义:

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

3.像String,Date,File,包装类等都重写了Object类中的toString()方法,使得在调用实体对象的toString()方法时,返回“实体内容”信息。

4.自定义类也可以重写toString()方法,当调用此方法时,返回实体内容,一般都是用快捷键生成toString()方法。


目录
相关文章
|
25天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
JavaScript 前端开发
`Object.create()` 方法的参数
【10月更文挑战第29天】`Object.create()` 方法的参数提供了多种创建对象和控制对象属性及继承关系的方式,开发人员可以根据具体的需求灵活运用,以实现更高效、更符合设计要求的对象创建和继承机制。
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
147 4
|
2月前
|
设计模式
在实际开发中,什么时候应该使用 `new` 关键字,什么时候应该使用 `Object.create()` 方法?
【10月更文挑战第29天】`new` 关键字适用于创建具有特定类型和初始化逻辑的对象实例,以及实现基于原型链的继承;而 `Object.create()` 方法则适用于基于现有对象创建相似对象、避免构造函数的副作用、创建具有特定原型链的对象等场景。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象,以实现更高效、更灵活的代码结构。
|
8月前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
57 3
|
8月前
|
Java 程序员 编译器
【详识JAVA语言】面向对象程序三大特性之二:继承
【详识JAVA语言】面向对象程序三大特性之二:继承
80 2
|
7月前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
163 57
|
6月前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
|
7月前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
72 3
|
7月前
|
Java
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承