浅谈java中的常量池
来源:互联网 发布:天津商业大学网络缴费 编辑:程序博客网 时间:2024/05/29 13:01
Integer i01 = 59;int i02 = 59;Integer i03 = Integer.valueOf(59);Integer i04 = new Integer(59);System.out.println(i01 == i02);//trueSystem.out.println(i01 == i03);//true//System.out.println(i03 == i04);//false //两个new出来的对象何时都不会相等System.out.println(i02 == i04);//true //int 和Integer 怎么比都是相等的,因为Integer在比较之前会先拆箱成int
对于前三行,Java在编译的时候会直接将代码封装成Integer i01 = Integer.valueOf(59);,从而使用常量池中的对象。而第四行,是创建一个新的对象,java会为其分配一个独立的地址,所以不会相等‘==’问题
八大基本类型间用 == 是比较它们的数值
类之间比较的是它们的引用地址
上例是我在牛客网的练习题,很遗憾的错了,所以记录于此,希望不会再错,
java在编译期讲已确定的一些数据(类、方法、接口等中的常量和字符串常量)保存在常量池中,所以常量池被认为是JVM中的一块特殊的内存空间。
---------
常量池的好处:
常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。
例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。
(1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。
(2)节省运行时间:比较字符串时,==比equals()快。对于两个引用变量,只用==判断引用是否相等,也就可以判断实际值是否相等。(摘自简书:原文链接:http://www.jianshu.com/p/c7f47de2ee80)
0 0
- 浅谈java中的常量池
- 浅谈java常量池
- Java 中的常量池
- Java中的字符串常量池
- JAVA中的String常量池
- Java中的字符串常量池
- Java中的字符串常量池
- java中的字符串常量池
- java中的字符串常量池
- Java中的字符串常量池
- Java 常量与变量浅谈
- java中的堆、栈、常量池
- java中的堆、栈、常量池
- java中的String与常量池
- Java中的栈,堆和常量池
- java中的String类常量池详解
- java中的String类常量池详解
- java中的堆、栈、常量池
- 【方便快捷的java类库】Apache Commons IO
- oracle: 表连接方式---hash join原理
- numpy.ndarray 交换多维数组(矩阵)的行/列
- Mybatis框架学习(二)—DAO开发方式和Mapper代理的开发方式
- python django
- 浅谈java中的常量池
- mysql高级:触发器
- 解读程序
- 注意!你的Thread.Abort方法真的让线程停止了吗?
- Android SdCard写入权限
- mysql高级:存储过程
- C++ 使用二进制读写整数类型
- 计算机组成原理:流水CPU
- Cocos2d-x:截图背景空白