Java面试炼金系列 | 关于String类的常见面试题剖析

本文详细探讨了Java中String类的基础知识和高频面试题,包括'=='运算符与equals()方法的差异,hashCode()方法的作用及与equals()的关系。重点讲解了String为何是final修饰,初始化方式,线程安全性,以及在HashMap中常用作key的原因。同时,介绍了String的intern()方法和常量池的相关编程题,最后比较了String、StringBuffer、StringBuilder的区别。

0x0 基础知识

1. '==' 运算符

Java中的数据类型分为基本数据类型和引用数据类型:

  1. 基本类型:编程语言中内置的最小粒度的数据类型。它包括四大类八种类型
    • 4种整数类型:byteshortintlong
    • 2种浮点数类型:floatdouble
    • 1种字符类型:char
    • 1种布尔类型:boolean
  2. 引用类型:引用也叫句柄,引用类型,是编程语言中定义的在句柄中存放着实际内容所在地址的地址值的一种数据形式,例如:
    • 接口
    • 数组
  • 对于基本类型来说,== 比较的是它们的值
  • 对于引用类型来说,== 比较的是它们在内存中存放的地址(堆内存地址)

举例说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public static void main(String[] args) {

    //基本数据类型

    int num1 = 100;

    int num2 = 100;

    System.out.println("num1 == num2 : " + (num1 == num2) + "\n");

 

    //引用类型,其中'System.identityHashCode'可以理解为打印对象地址

    String str1 = "mio4";

    String str2 = "mio4";

    System.out.println("str1 address : " + System.identityHashCode(str1));

    System.out.println("str2 address : " + System.identityHashCode(str1));

    System.out.println("str1 == str2 : " + (str1 == str2) + "\n");

 

    String str3 = new String("mio4");

    String str4 = new String("mio4");

    System.out.println("str3 address : " + System.identityHashCode(str3));

    System.out.println("str4 address : " + System.identityHashCode(str4));

    System.out.println("str3 == str4 : " + (str3 == str4));

}

运行上面的代码,可以得到以下结果:

1

2

3

4

5

6

7

8

9

num1 == num2 : true

 

str1 address : 1639705018

str2 address : 1639705018

str1 == str2 :&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值