java常量池
来源:互联网 发布:希捷备份软件 编辑:程序博客网 时间:2024/06/08 10:58
论坛里有人问了个问题:
为什么(Integer)1==(Integer)1, (Integer)222!=(Integer)222
?
Java为了提高性能提供了和String类一样的对象池机制,当然Java的八种基本类型的包装类(Packaging Type)也有对象池机制。
Java在编译的时候会执行将代码封装成Integer i1=Integer.valueOf()
。 Integer.valueOf()中有个内部类IntegerCache(类似于一个常量数组,也叫对象池),它维护了一个Integer数组cache,长度为(128+127+1)=256;Integer类中还有一个Static Block(静态块)
static final Integer[] cache = new Integer[-(-128) + 127 + 1]; static { for (int i = 0; i < cache.length; i++) { cache[i] = new Integer(i - 128); } }
“==“比较的是地址,常量池有的值,jvm不会创建新对象,所以地址相同,不在常量池中的会创建新对象,所以地址不同。
0 0
- Java常量池
- java常量池
- Java常量池
- java 常量池笔记
- Java常量池
- java常量池概念
- Java 常量池
- java常量池概念
- java常量池
- java堆栈常量池
- 理解java常量池
- Java常量池详解
- java常量池概念
- 理解Java常量池
- JAVA常量池技术
- Java之常量池
- java 常量池
- java 常量池
- ImageView和TextView的background点击效果
- Java基础:异常
- java权限修饰符
- Android中判断当前网络是否可用
- 第一次使用markdown,谈谈我的看法
- java常量池
- IP简介2
- c#中使用npoi将datagridview中的全部数据导出到excel中去
- maven构建工程(springmvc/ssh/ssm)错误解决大全
- Windows7 + cygwin+ hadoop +eclipse 安装完整
- MongoDB, Cassandra, 和 HBase -- 三种NoSQL数据库比较
- Second Highest Salary
- linux下的netlink编程
- Jquery 对象与 DOM对象的相互转换