(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;
    }
}


相关文章
|
1天前
|
存储 JSON 前端开发
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
|
1天前
|
安全 Java 机器人
解决Java中的NumberFormatException异常的实用方法
解决Java中的NumberFormatException异常的实用方法
|
1天前
|
Java 机器人 程序员
深入理解Java中的类与对象:封装、继承与多态
深入理解Java中的类与对象:封装、继承与多态
|
1天前
|
缓存 监控 Java
Java中的内存泄漏及其排查方法
Java中的内存泄漏及其排查方法
|
1天前
|
Java 机器人 关系型数据库
Java中的类与接口:抽象与实现的艺术
Java中的类与接口:抽象与实现的艺术
|
1天前
|
Java
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
4 0
|
1天前
|
Java
java反射-获取类的属性、构造方法、方法
java反射-获取类的属性、构造方法、方法
3 0
|
1天前
|
Java
java反射-获取类的Class对象方式
java反射-获取类的Class对象方式
3 0
|
1天前
|
自然语言处理 负载均衡 Java
Java中的微服务架构实现方法*
Java中的微服务架构实现方法*
|
1天前
|
存储 自然语言处理 Java
Java-File类与IO流(2)
Java-File类与IO流(2)
6 0