Integer笔记
来源:互联网 发布:俄罗斯共青城现状 知乎 编辑:程序博客网 时间:2024/05/01 17:35
public static void main(String[] args){
Integer a = 100;
Integer b = 100;
System.out.println(a == b);
}
结果:true
public static void main(String[] args){
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b);
}
结果:false
public static void main(String[] args){
Integer a = 200;
Integer b = 200;
System.out.println(a == b);
}
结果:false
注意:以上在jdk1.5以上可以通过。
第二个很容易理解。
为啥第一个返回true呢?而第三个又返回false?
继续修改,发现在127跟128是个分界线
当-128 <= ab <= 127时候,返回true
此外,返回false
通过反编译得知,
Integer a = 200;
变成了
Integer a = Integer.valueOf(200);
再看看java.lang.Integer中关于valueOf的源代码是怎样的:
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) {
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
结论:
当这个值在-128和127之间时,会用缓存保存起来,供多次使用,以节约内存。
如果不在这个范围内,则创建一个新的Integer对象。
这个问题的本质是Integer的valueOf()方法
Integer a = 100;
Integer b = 100;
System.out.println(a == b);
}
结果:true
public static void main(String[] args){
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b);
}
结果:false
public static void main(String[] args){
Integer a = 200;
Integer b = 200;
System.out.println(a == b);
}
结果:false
注意:以上在jdk1.5以上可以通过。
第二个很容易理解。
为啥第一个返回true呢?而第三个又返回false?
继续修改,发现在127跟128是个分界线
当-128 <= ab <= 127时候,返回true
此外,返回false
通过反编译得知,
Integer a = 200;
变成了
Integer a = Integer.valueOf(200);
再看看java.lang.Integer中关于valueOf的源代码是怎样的:
public static Integer valueOf(int i) {
}
结论:
当这个值在-128和127之间时,会用缓存保存起来,供多次使用,以节约内存。
如果不在这个范围内,则创建一个新的Integer对象。
这个问题的本质是Integer的valueOf()方法
- Integer笔记
- 【LeetCode笔记】Reverse Integer
- leetcode笔记:Reverse Integer
- leetcode笔记:Integer Break
- Java笔记-Integer类
- Java-API学习笔记---Integer
- 【LeetCode】Reverse Integer解题笔记
- 随手笔记:JAVA中的 Integer
- leetcode笔记:Integer to Roman
- leetcode笔记:Roman to Integer
- leetcode笔记--Roman to Integer
- LeetCode笔记:7. Reverse Integer
- LeetCode笔记:343. Integer Break
- POJ 1650 Integer Approximation 笔记
- LeetCode笔记:7. Reverse Integer
- POJ 1716 Integer Intervals 笔记
- POJ 1503 Integer Inquiry 笔记
- jdk源码学习笔记---Integer
- Java高新技术(二)之类加载机制和反射
- linux学习
- VirtualBox 虚拟机中安装 Ubuntu 12.04
- Android eclipse中程序调试
- Sumsets Uva10125 poj
- Integer笔记
- CF 253A(最大间隔相异队列)
- Windows Server 2003中的磁盘管理
- jsp注意点
- ubuntu
- x264_mb_predict_mv_16x16 函数分析
- android 学习 实现切换动画,
- 静态链接库与动态链接库LINUX_C
- 实现一个View的横线