String缓存池与Integer缓存池

本文详细介绍了Java中String和Integer对象的缓存池机制,展示了如何通过常量池节省内存,并通过实例说明了它们在比较时的区别。重点讲解了为何String的==操作符可用于内容比较,而Integer则需借助equals()方法。

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


一、String缓存池

String类中存在一个常量缓存池,例如 String str1 = “虎虎生威”;,用这种方式定义字符串时,该字符串会被缓存进字符串常量池。当再定义另一个内容相同的字符串时,例如String str2 = “虎虎生威”;,str2将会指向常量池中“张三”这个字符串的地址,不需要另外开辟新空间。因此,这样定义的字符串可以通过“==”比较内容是否相等。
代码如下(示例):

		String str1 = "虎虎生威";
		String str2 = "虎虎生威";
		
		String str3 = new String("虎虎生威");

		System.out.println(str1 == str2);// 输出结果为:true
		System.out.println(str1 == str3);// 输出结果为:false

二、Integer缓存池

Integer缓存池是有限制的,只能缓存-128~127之间的数字 ,如果定义的两个相同的数字在这个范围之间,可以使用“==”比较值是否相等。但是如果超出这个范围就不能使用了。Integer是引用类型,因此在比较两个Integer类型变量的值时,一般使用equals()方法。

代码如下(示例):

		Integer n1 = 127;
		Integer n2 = 127;
		
		Integer n3 = 1433223;
		Integer n4 = 1433223;
		
		System.out.println(n1 == n2);// 输出结果为:true
		System.out.println(n3 == n4);// 输出结果为:false
		System.out.println(n3.equals(n4));// 输出结果为:true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值