[Java-基础] Object类
2026年3月17日大约 2 分钟
[Java-基础] Object类
Object类有哪些方法?
equals(Object obj): 判断对象是否相等。hashCode(): 返回对象的哈希码。重写equals方法时,必须重写hashCode方法。toString(): 默认返回类名的哈希码,一般都会重写。getClass(): 返回对象的运行时类对象。一般用于反射。clone(): 用于创建对象的浅拷贝,需要实现Cloneable接口。wait(): 作用时让当前持有对象锁的线程,释放锁,进入等待状态。notify()和notifyAll(): 用于唤醒线程。
Object类的equals方法和==有什么区别?
==比较的是内存地址,而equals比较的是对象的内容。- 核心就在于对象之间比较的区别:
- 默认
equals方法和==一样比较内存地址, - 但很多常用类重写了
equals方法,使其比较对象的内容。
- 默认
字符串常量池 问题
当使用 双引号 创建字符串时,会被放入字符串常量池中,相同的内容会指向同一个地址
所以==比较时也会返回true。
hashcode和equals方法有什么关系?
重写equals方法时,必须重写hashCode方法。
这是为了在使用哈希表时,为了保证其正确使用hashcode方法来判断对象是否相等。
java 里 string的常用方法有哪些?
length(): 返回字符串的长度。equals(Object anObject): 比较字符串内容是否相等。substring(int beginIndex, int endIndex): 指定索引获取子串。trim(): 去除字符串首尾空格。replace(char oldChar, char newChar): 替换指定字符。isEmpty(): 判断字符串长度是否为0。
String、StringBuffer、StringBuilder的区别和联系
核心回答点: 可变性 、线程安全性 、 性能 、适用场景。
- String 是 不可变,线程安全的,在频繁修改时性能低,适用于固定字符串。
- StringBuffer 是 可变的,线程安全的,由于需要锁性能一般,适用于多线程环境下频繁修改字符串的场景。
- StringBuilder 是 可变的,非线程安全的,修改性能最高,适用于单线程环境下频繁修改字符串的场景。
- 联系:三者都是字符串处理类。