(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月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
75 9
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
151 57
|
5天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
54 8
|
1月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
44 4
|
1月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
38 4
|
29天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
135 4