字符串常量池

本文详细解析了Java中字符串常量池的概念及其实现机制,通过三个实例对比说明了字符串对象在不同情况下的内存分配方式,揭示了字符串常量池如何确保字符串唯一性和提高程序效率。

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

字符串常量池:是指.java编译的时候已经被确定,并且被保存在编译好的.class文件中

1、String str = "strHello";

String str1="strHello";

String str2 = "str"+"Hello";

str==str——true

str1==str2——true

解析: 字符串常量池就像一个池子,确保在池子中一个字符串常量只有一个拷贝,对于str1来说,在池子中已经有"strHello",java就不会再创建实例,会把str1直接引用到“strHello”,所以str和str1的引用地址相同,当一个字符串常量由多个字符串常量组成,它也是字符串常量,所以2个都是true

2、String str = "strHello";

String str2 = new String("strHello");

str==str2——false

解析:str还是字符串常量,编译的时候已经确定,str2无法再编译期间被确定,所以是运行时创建的新对象str2的引用

3、String str = new String("strHello");

String str2 = new String("strHello");

str==str2——false


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值