对Integer的再认识

本文详细介绍了Java中Integer对象的缓存机制,解释了valueOf方法如何通过缓存频繁使用的值来提升性能。当Integer对象的基本值位于-128到127之间时,它们会被缓存并复用,从而实现内存节约。

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

为了节省内存,对于下列包装对象的两个实例,当它们的基本值相同时,他们总是==:  
 Boolean  
 Byte  
 Character, \u0000 - \u007f(7f是十进制的127)  
 Integer, -128 — 127  

* Description: Integer.valueOf()方法基于减少对象创建次数和节省内*存的考虑,缓存了[-128,127]之间的数字。
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author yehaicao
* @version 1.0
*/
public class IntegerCacheTest
{
public static void main(String[] args)
{
//生成新的Integer对象
Integer in1 = new Integer(6);
//生成新的Integer对象,并缓存该对象
Integer in2 = Integer.valueOf(6);
//直接从缓存中取出Ineger对象
Integer in3 = Integer.valueOf(6);
//输出false
System.out.println(in1 == in2);
//输出true
System.out.println(in2 == in3);
//由于Integer只缓存-128~127之间的值,
//因此200对应的Integer对象没有被缓存。
Integer in4 = Integer.valueOf(200);
Integer in5 = Integer.valueOf(200);
System.out.println(in4 == in5); //输出false
}
}

JDK6 API:
valueOf
public static Integer valueOf(int i)返回一个表示指定的 int 值的 Integer 实例。
如果不需要新的 Integer 实例,则通常应优先使用该方法,而不是构造方法 Integer(int),**

因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能。

**

参数:
i - 一个 int 值。
返回:
表示 i 的 Integer 实例。
从以下版本开始:
1.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值