String#intern结果对比源码测试

本文深入探讨Java中String的intern方法,通过源码分析和测试,揭示该方法如何处理字符串池,并关注其对内存和性能的影响。同时,介绍System.identityHashCode在对象哈希码方面的应用。
摘要由CSDN通过智能技术生成
/**
 *返回字符串对象的规范表示。 最初为空的字符串池由String类String 。 
 *当调用intern方法时,如果池已经包含与equals(Object)方法确定的相当于此String对象的字符串,则返回来自池的字符串。否则,此String对象将添加到池中,并返回对此String对象的引用。
 *由此可见,对于任何两个字符串s和t , s.intern() == t.intern()是true当且仅当s.equals(t)是true 。
 */
// 如果池已经包含与equals(Object)方法确定的相当于此String对象的字符串,则返回来自池的字符串
String bb = "b";
String b = new String("b");
String bbb = b.intern();
// 93122545
System.err.println(System.identityHashCode(b));
// 2083562754
System.err.println(System.identityHashCode(bb));
// 2083562754
System.err.println(System.identityHashCode(bbb));

// 否则,此String对象将添加到池中,并返回对此String对象的引用。
String a = new String("a");
String aa = a.intern();
String aaa = "a";
// 488970385
System.err.println(System.identityHashCode(a));
// 1209271652
System.err.println(System.identityHashCode(aa));
// 1209271652
System.err.println(System.identityHashCode(aaa));

System#identityHashCode:返回与默认方法hashCode()返回的给定对象相同的哈希码,无论给定对象的类是否覆盖了hashCode()。 空引用的哈希码为零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值