(JAVA):Object类的常见方法记录,遇见了要知道。

简介: (JAVA):Object类的常见方法记录,遇见了要知道。

目录

言图:

1、“==” 和 equals的对比

2、 hashCode()方法

3、toString()方法

4、finalize()方法



言图:


 

1、“==” 和 equals的对比

“==” 是一个比较运算符:

       1、==:既可以判断基本类型,也可以判断引用类型。

       2、==:如果判断基本类型,判断的是值是否相等。示例:int i = 10,double d = 10.0;

       3、==:如果判断引用类型,则判断的是地址是否相等,即判定是不是同一个对象。

equals方法:

       1、equals 是object 类中的方法,只能用于判断引用类型。

       2、默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。

代码示例:

public class equalo1 {
    public static void main(String[] args) {
        A a = new A();
        A b = a;
        A c = b;
        System.out.println(c == a);//true
        System.out.println(b == a);//true
        B bobj = a;
        System.out.println(bobj == c);//true
        System.out.println("skfdf".equals("fjsk"));//false
    }
}
class B{}
class A extends B{}


2、 hashCode()方法

语法:

       object.hashCode()

功能:

              返回该对象的哈希码值。(支持此方法是为了提高哈希表的性能)

说明:

       实际上,由object类定义的hashCode方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是Java编程语言不需要这种实现技巧)

代码示例:

Object obj1 = new Object();
System.out.println(obj1.hashCode());

小结:

       1、提高具有哈希结构的容器的效率。

       2、两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!反之,指向不同的                  对象,则哈希值不同。

       3、哈希值主要是根据地址号来的!但是不能将哈希值等价于地址。

       4、在集合中,hashCode 如果需要的话,也会重写。



3、toString()方法

语法:

       String toString()

返回值:

       默认返回:全类名+@+哈希值的十六进制

代码示例:

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

小结:

       1、子类往往重写toString方法,用于返回对象的属性信息。

       2、重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式。

       3、当直接输出一个对象时,toString方法会被默认调用。


4、finalize()方法

语法:

      protected void finalize()

说明:

1、当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法。

2、什么时候被回收:当某个对象没有任何引用的时候,则JVM就默认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,就会先调用finalize方法

3、垃圾回收机制的调用,是由系统来决定的,也可以通过System.gc()  主动触发垃圾回收机制。

代码示例:

public class equalo1 {
    public static void main(String[] args) {
        Car bmw = new Car("宝马");
        //这时car对象就是一个垃圾,垃圾回收器就会回收(销毁)对象,在销毁之前,会调用该对象的finalize方法
        //程序员就可以在 finalize中,写自己的业务逻辑代码(比如释放资源:数据库链接,或者打开文件)
        //如果程序员不重写finalize,那么就会调用object类的finalize,即默认处理
        //如果程序员重写了finalize,就可以实现自己的逻辑
        bmw = null;
    }
}
class Car{
    private String name;
    public Car(String name){
        this.name = name;
    }
}


相关文章
|
2月前
|
Java 编译器 API
Java 密封类:精细化控制继承关系
Java 密封类:精细化控制继承关系
272 83
|
5天前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
157 101
|
5天前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
158 100
|
1月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
288 120
|
1月前
|
算法 Java 开发者
Java 项目实战数字华容道与石头迷阵游戏开发详解及实战方法
本文介绍了使用Java实现数字华容道和石头迷阵游戏的技术方案与应用实例,涵盖GUI界面设计、二维数组操作、游戏逻辑控制及自动解法算法(如A*),适合Java开发者学习游戏开发技巧。
189 46
|
1月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
2月前
|
Java 索引
Java ArrayList中的常见删除操作及方法详解。
通过这些方法,Java `ArrayList` 提供了灵活而强大的操作来处理元素的移除,这些方法能够满足不同场景下的需求。
368 30
|
1月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
|
2月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
123 1

热门文章

最新文章