Java中1000==1000为false而100==100为true
来源:互联网 发布:移动互联网软件开发 编辑:程序博客网 时间:2024/05/19 10:38
public class Test {
public static void main(String[] args) {
Integer a = 1000,b=1000;
System.out.println(a == b); //false
Integer c = 100,d=100;
System.out.println(c == d); //true
}
public static void main(String[] args) {
Integer a = 1000,b=1000;
System.out.println(a == b); //false
Integer c = 100,d=100;
System.out.println(c == d); //true
}
}
如果把==换成equals,那么结果都是true
基本知识:如果两个引用对象指向同一个对象,用==表示他们是相等的。如果两个引用指向不同的对象,用==表示他们是不相等,即使他们的内容相同。
原因分析:在Integer类中有一个内部私有类IntegerCache,它的缓存是从-128-127之间的所有整数对象。---->就说明所有的小整数在内部缓存。
所以:Integer c = 100 等价于Integer c =Integer.valueOf(100)
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
如数值的范围在-128-127之间都是从高速缓存返回实例的。---所以指向同一个对象。
那么为什么需要缓存呢?
因为此范围内的整数的使用率比较高。使用相同的底层对象是有代价的,可以减少潜在的内存占用。
0 0
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true
- 为什么Java中1000==1000为false,而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?
- Java中1000==1000为false而100==100为true
- 为什么Java中1000==1000为false而100==100为true?
- 为什么Java中1000==1000为false而100==100为true?(Integer)
- 为什么Java 两个Integer 中1000==1000为false而100==100为true?
- 洛谷【1101】单词方阵
- python 声明式编程
- TensorFlow下运行mnist遇到的问题、更新cudnn方法
- jquery 回车事件
- 解决本地运行RMMV的HTML5游戏时出现Failed to load: data/actos.json 问题
- Java中1000==1000为false而100==100为true
- gazebo简明教程
- android游戏开发实例-可局域网对战的飞行棋(一)
- hdu1010(Tempter of the Bone)深搜+剪枝
- poj1003 Hangover && poj1004 Financial Management
- Oracle中查看所有表和字段
- 前事不忘,后事之师——第三次自考总结
- 关于安卓开发中Activity动画切换效果无效的一个总结
- (c语言)比较两个字符串的长度