-
==
和equals()
的区别==
是一个比较运算符,用于比较两个对象的引用是否相等。equals()
是 Object 类中的一个方法,用于比较两个对象的内容是否相等。- 对于基本类型,
==
比较的是值;对于引用类型,==
比较的是对象的引用。
-
hashCode()
有什么用?为什么要有 hashCode?hashCode()
方法用于获取对象的哈希码,返回一个整数值。- 哈希码可以用于在哈希表等数据结构中快速定位对象。
- 在使用集合类如 HashSet 和 HashMap 时,hashCode() 方法用于确定对象在集合中的存储位置。
-
为什么两个对象有相同的 hashCode 值,它们也不一定是相等的?
- hashCode() 方法的返回值是根据对象的内容计算得到的。
- 两个对象可能有不同的内容,但是由于哈希算法的限制,它们的 hashCode() 值可能相同。
- equals() 方法会进一步比较对象的内容来确定是否相等。
-
String、StringBuffer、StringBuilder 的区别?
- String 是不可变的字符串类,每次对 String 进行修改都会创建一个新的 String 对象。
- StringBuffer 和 StringBuilder 是可变的字符串类,可以对字符串进行修改。
- StringBuffer 是线程安全的,适用于多线程环境;StringBuilder 不是线程安全的,适用于单线程环境。
-
String 为什么是不可变的?
- String 是不可变的,主要是为了提高性能和安全性。
- 不可变字符串可以被共享,避免重复创建相同内容的字符串,节省内存空间。
- 不可变字符串可以作为 Map 的键,保证哈希值的稳定性。
- 字符串的不可变性使得它们在多线程环境下是线程安全的。
-
String.equals()
和Object.equals()
有何区别?String.equals()
方法重写了 Object 类中的 equals() 方法。String.equals()
比较的是字符串的内容是否相等。Object.equals()
比较的是对象的引用是否相等,等价于使用==
运算符。
-
字符串常量池的作用了解吗?
- 字符串常量池是存储字符串常量的一块特殊内存区域。
- 当使用双引号创建字符串时,字符串常量池会先检查是否已存在相同内容的字符串,如果存在则返回引用,否则创建新的字符串并存储在常量池中。
- 字符串常量池的存在可以节省内存空间,提高字符串的共享性和效率。
-
String s1 = new String("abc");
这句话创建了几个字符串对象?- 看情况,如果堆中没有的话,这句话创建了两个字符串对象。
"abc"
是一个字符串常量,在常量池中创建。new String("abc")
创建了一个新的字符串对象,存储在堆中。
面试大白话,消化八股文-基础篇04
最新推荐文章于 2024-08-02 09:41:06 发布