关于常量池问题
来源:互联网 发布:淘宝自己去看算访客吗 编辑:程序博客网 时间:2024/06/05 14:09
关于 Java 常量池
当你新建两个对象做 == 比较时, 却会出现很有意思的效果, 参见例题 1.
//常量池 例题1 static void T01(){ String s1 = "abc"; String s2 = "abc"; String s3 = new String("abc"); System.out.println(s1 == s2); //true System.out.println(s2 == s3); //false }... java'''
- 原因
- 一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配的, 二堆内存中则存放 new 出来的对象和数组, 初次之外, 还有一块区域, 叫做常量池. 第一个 s1 对象, 这样的声明值就存在常量池中, 当创建第二个对象 s2 时, java 底层会优先在常量池中查找是否有相同值, 如果存在则指向这个值, 所以第一个判断为什么会为 true.
下面来看第二个例子
static void T02(){ Integer a =1000,b=1000; Integer c=100,d=100; System.out.println(a == b); System.out.println(c == d); } ... java'''
- 基本知识
- == 表示两个引用指向同一对象.即使值相同,指向不同也不同.
- 说明
- 但按照常量池的说明,这里面第一个应该是true啊,但实际上Integer.java类有一个内部私有类 IntergerCache.java,它缓存了-128到127之间的所有的整数对象.
- 所以变成了
//Integer对象调用valueOf()对象进行类型转换. -128 - 127缓存了下来,所以在-127 - 128之间的时候是引用的同一个对象 //int和Integer进行==比较时,会把Integer自动拆箱,转换成int类型. true... java'''
0 0
- 关于常量池问题
- 关于字符串常量池的问题
- 一个关于字符串常量池的问题
- 关于常量字符串的问题
- 关于常量池
- 关于 String对象 常量池 字符串常量
- 关于常量指针的一些问题
- 关于const常量的内存分配问题
- c语言关于字符串常量的问题
- 关于函数返回字符串常量的问题
- 关于常量
- 关于常量
- java的常量池问题
- Java常量池相关问题
- 关于String s1 = new String("abc") 创建一个对象问题和Java常量池总结
- JAVA中关于String类型的创建和字符串常量池的问题
- 常量问题
- 关于const常量与指针赋值的问题
- 实验吧 web 输入密码
- HDU 1194 Beat the Spread!(数学)
- 313. Super Ugly Number
- 模板--二维凸包(2--两相离凸包最短距离)
- PySpark处理数据并图表分析
- 关于常量池问题
- Unity Shaders and Effects Cookbook (4-4)在Cubemap 上使用 法线贴图 (法线贴图与反射)
- 从commons pool2到池
- Atitti. 语法树AST、后缀表达式、DAG、三地址代码
- HDU 1196 Lowest Bit(二进制)
- Android利用canvas画各种图形 及Paint用法
- mysql--事务隔离级别
- centos 7下源码编译安装php支持PostgreSQL
- 设计模式 - 观察者模式(Observe pattern)C++实现