Java中intern()方法的使用

本文详细解释了Java中String类的intern()方法的工作原理。通过对比直接赋值与new关键字创建字符串的不同,阐述了intern()如何确保字符串常量池中的唯一性,以及它在性能和内存使用上的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String类中定义了intern()方法,该方法的用途是为每一个字符序列生成一个且仅生成一个String的引用,下面用实例来进行说明:
首先了解Java中String的内存分配。
1、直接赋值方式

String a = "123";
String b = "123";
System.out.println(a == b);

执行结果为true,可知,这种方式定义的String类型,字符串的内容”abc”存在于常量池中,且多个引用共享。
2、new方式

String aa = new String("123");
String bb = new String("123");
System.out.println(aa == bb);

执行结果为false,可知,通过new生成的对象放于堆区,双等号进行比较时,比较的是对象,虽然内容相等,但是对象不是同一个,因此打印结果为false。使用equals方法进行比较内容。
3、intern()
当调用intern方法时,不管使用什么方式定义一个字符串,都会首先在常量池中查找是否有相应的字符串存在,如果有,直接返回引用,否则,在常量池中生成相应的字符串并返回引用。例子如下:

String c = "c";
String cc = new String("c");
System.out.println(c == cc);

String d = "d";
String dd = new String("d").intern();
System.out.println(d == dd);

输出结果为false和true,前一个结果比较好理解,第二个结果为true,说明调用intern后,d和dd指向的为同一对象,均为常量池中的”d”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值