面试大白话,消化八股文-基础篇04

  1. ==equals() 的区别

    • == 是一个比较运算符,用于比较两个对象的引用是否相等。
    • equals() 是 Object 类中的一个方法,用于比较两个对象的内容是否相等。
    • 对于基本类型,== 比较的是值;对于引用类型,== 比较的是对象的引用。
  2. hashCode() 有什么用?为什么要有 hashCode?

    • hashCode() 方法用于获取对象的哈希码,返回一个整数值。
    • 哈希码可以用于在哈希表等数据结构中快速定位对象。
    • 在使用集合类如 HashSet 和 HashMap 时,hashCode() 方法用于确定对象在集合中的存储位置。
  3. 为什么两个对象有相同的 hashCode 值,它们也不一定是相等的?

    • hashCode() 方法的返回值是根据对象的内容计算得到的。
    • 两个对象可能有不同的内容,但是由于哈希算法的限制,它们的 hashCode() 值可能相同。
    • equals() 方法会进一步比较对象的内容来确定是否相等。
  4. String、StringBuffer、StringBuilder 的区别?

    • String 是不可变的字符串类,每次对 String 进行修改都会创建一个新的 String 对象。
    • StringBuffer 和 StringBuilder 是可变的字符串类,可以对字符串进行修改。
    • StringBuffer 是线程安全的,适用于多线程环境;StringBuilder 不是线程安全的,适用于单线程环境。
  5. String 为什么是不可变的?

    • String 是不可变的,主要是为了提高性能和安全性。
    • 不可变字符串可以被共享,避免重复创建相同内容的字符串,节省内存空间。
    • 不可变字符串可以作为 Map 的键,保证哈希值的稳定性。
    • 字符串的不可变性使得它们在多线程环境下是线程安全的。
  6. String.equals()Object.equals() 有何区别?

    • String.equals() 方法重写了 Object 类中的 equals() 方法。
    • String.equals() 比较的是字符串的内容是否相等。
    • Object.equals() 比较的是对象的引用是否相等,等价于使用 == 运算符。
  7. 字符串常量池的作用了解吗?

    • 字符串常量池是存储字符串常量的一块特殊内存区域。
    • 当使用双引号创建字符串时,字符串常量池会先检查是否已存在相同内容的字符串,如果存在则返回引用,否则创建新的字符串并存储在常量池中。
    • 字符串常量池的存在可以节省内存空间,提高字符串的共享性和效率。
  8. String s1 = new String("abc"); 这句话创建了几个字符串对象?

    • 看情况,如果堆中没有的话,这句话创建了两个字符串对象。
    • "abc" 是一个字符串常量,在常量池中创建。
    • new String("abc") 创建了一个新的字符串对象,存储在堆中。

猫猫骑士守护

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值