public void method1() {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j);
Integer m = 1;
Integer n = 1;
System.out.println(m == n);//True
Integer x = 128;
Integer y = 128;
System.out.println(x == y);//False
}

如题,当数值大于等于128时,创建的俩个对象地址就不一样了,这个原因还得看Integer的源码

 public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)//-128~127
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

这个IntegerCache 数组是包装类自己创建的缓存数组,里面存放着【-128,127】的整数,当数值在这个范围时,会从这个数组中直接取值,当数值不在这个范围时,就会新建对象,所以地址就会不一样

-------------------------------------------------

那么Double类型的呢

    public static void main(String[] args) {
double a = 2.0;
double b = 2.0;
Double c = 2.0;
Double d = 2.0;
System.out.println(a == b);//true
System.out.println(c == d);//false
System.out.println(a == d);//true
}

进源码

public static Double valueOf (double d){
return new Double (d) ; }

显然,Double没有Integer花里胡哨,只有调用就新建一个对象

最新文章

  1. tomcat加密
  2. RHEL6.5及Win7的和谐共处(投机版)
  3. C#之延迟加载
  4. 2)main函数在执行前和执行后有哪些操作
  5. 取caml查询结果的前多少行
  6. 网络断开后重连downloadProvider继续下载问题调试分析
  7. BubbleSort - 实用委托
  8. 同步队列-Queue模块解析
  9. HDOJ 4007 Dave【最大覆盖集】
  10. visio ppt axure AI svg powerdesign xmind
  11. Astyle编程语言格式化工具的说明
  12. AI_深度学习概论
  13. Ping 命令实战小结--TCP/IP协议学习
  14. aliyun mysql
  15. CF1107
  16. MTCNN试用
  17. Tensorflow timeline trace
  18. C++标准库addressof的应用
  19. Andrew Ng-ML-第九&amp;十章-神经网络
  20. JavaScript演示下Singleton设计模式

热门文章

  1. day1_python流程控制、For循环
  2. 史上最全的MYSQL备份方法
  3. [C#] Parallel.For的线程数
  4. H3C 星型以太网拓扑扩展
  5. H3C 轮询DCC和共享DCC
  6. TabHost选项卡的实现(二):使用Fragment实现
  7. Python--day30--tcp协议(建立链接三次握手,断掉链接四次挥手)和UDP协议
  8. Python--day25--面向对象之多态
  9. 洛谷P1280 尼克的任务 题解 动态规划/最短路
  10. BAT 脚本判断当前系统是 x86 还是 x64 系统