2019独角兽企业重金招聘Python工程师标准>>>

    @Testpublic void testHashCode() throws Exception {//[1237514926=acode, 1237514926=ccode, 548246552=bcode, 835648992=dcode]//可以看到 a 和 c 是同一个对象Integer a=9;Integer b=new Integer(9);Integer c=Integer.valueOf(9);Integer d=new Integer("9");int acode=System.identityHashCode(a);int bcode=System.identityHashCode(b);int ccode=System.identityHashCode(c);int dcode=System.identityHashCode(d);List<String> codeList=new ArrayList<>();codeList.add(acode+"=acode");codeList.add(bcode+"=bcode");codeList.add(ccode+"=ccode");codeList.add(dcode+"=dcode");Collections.sort(codeList);System.out.println(codeList);//[1134517053=acode, 1368884364=ccode, 401625763=dcode, 492228202=bcode]//如果值换为了128, 结果 a 和 c 就变成了不同对象, 这是因为 Integer 的实现原理, /*** 使用 new(int x) 创建对象的时候, 如下, 会创建新对象:* public Integer(int value) {*     this.value = value;* }* * Integer.valueOf(int x) 方法源码如下, 如果 x 在 IntegerCache.low 和 IntegerCache.high * (-128~127)之间,会直接从 IntegerCache.cache[] 数组里面取, 也就是说是基本类型数值 x=9 ,而* 下面的128超出了这个范围,会调用构造器创建新对象 :* public static Integer valueOf(int i) {*     if (i >= IntegerCache.low && i <= IntegerCache.high)*           return IntegerCache.cache[i + (-IntegerCache.low)];*       return new Integer(i);* }*/a = 128;b = new Integer(128);c = Integer.valueOf(128);d = new Integer("128");acode = System.identityHashCode(a);bcode = System.identityHashCode(b);ccode = System.identityHashCode(c);dcode = System.identityHashCode(d);codeList = new ArrayList<>();codeList.add(acode + "=acode");codeList.add(bcode + "=bcode");codeList.add(ccode + "=ccode");codeList.add(dcode + "=dcode");Collections.sort(codeList);System.out.println(codeList);}

转载于:https://my.oschina.net/wliming/blog/1512257

new Integer 和 Integer.valueOf 有什么不同相关推荐

  1. int、Integer、new Integer和Integer.valueOf()的 ==、equals比较

    Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能. Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Cha ...

  2. new Integer()与 Integer.valueOf()区别和联系

    自学练习用,如有错误,还请谅解批评. new Integer 是通过创建Integer对象来实现赋值. valueOf 是使用Integer中的方法来实现的. Integer x = new Inte ...

  3. Integer和Integer比较以及Integer和Int的比较分析

    发现做项目的过程中,在数值类型的比较上容易犯错,特别是Integer和Integer的比较,Integer和int的比较.虽然这些都是些基础语法,但稍不留意就容易犯错,在实际开发过程中如果出现这类失误 ...

  4. (Integer) 128 == (Integer) 128 为false详细解读

    所学知识 这里涉及到的知识点为Java的自动装箱.拆箱问题 先看简单示例: 第一组输出为true,第二组false,第三组false.第二组false很正常因为Integer对象地址不同,但为什么第一 ...

  5. Java的Integer和Integer比较相等

    Integer是包装类(引用数据类型),int是基本数据类型, Integer a=12; Integer b=12; //a==b为true: Integer c=1200; Integer d=1 ...

  6. Integer i1 = 10;和Integer = new Integer(10);的区别

    首先我们要明白Integer是引用数据类型,是包装类(封装类) 1.5版本之后,存在自动拆装包.他是int类型对应的封装类. Integer是直接继承于Number类间接继承于Object类 ,实现了 ...

  7. oracle中integer最大值,integer表示的最大整数

    Integer类型的变量可能存在的最大整数为? A.256 BInteger类的数据范围为,最小值为 -2^31,最大值为 2^31-1: 验证如下, 创建java类TestInteger,做测试验证 ...

  8. Java中Integer.MAX_VALUE/Integer.MIN_VALUE的含义

    leetcode209中有写到 int result = Integer.MAX_VALUE,填补一下知识盲区. integer.MAX_VALUE的含义 首先,回忆一下Java中基本数据类型有哪些: ...

  9. c语言里integer用法,integer constant

    允许直接在表达式中使用整数类型的值. 句法 整型常量是表单的非左值表达式. decimal-constant integer-suffix(optional)(1)octal-constant int ...

最新文章

  1. PL/SQL程序设计 第七章 包的创建和应用
  2. Java设计模式(工厂模式>抽象工厂模式和原型模式)
  3. 多线程-多图下载综合案例-SDWebImage框架实现代码
  4. python做软件-用python做个翻译小软件吧~
  5. 【网址收藏】Ubuntu使用OBS录制桌面时黑屏怎么办?
  6. FreeRTOS任务通知
  7. KEIL4.12中添加ULINK2的支持
  8. debian 安装java_debian9安装jdk1.8
  9. IaaS, PaaS和SaaS公司都做些什么
  10. Css学习总结(5)——CSS常见布局方式
  11. 小程序mpvue图片绘制水印_基于mpvue小程序使用echarts画折线图的方法示例
  12. Autofs自动挂在实现
  13. python动态属性_Python进阶之@property动态属性的实现
  14. python_sorted()详解
  15. 最大子段和问题(3种方法)
  16. Pale Moon 15.1 发布,苍月浏览器
  17. ESP32基于arduino开发的心跳体温检测系统(二)传感器的使用
  18. js闭包的理解及应用场景
  19. tomcat 运行提示The background cache eviction process was unable to free
  20. 脑裂的产生与解决方案

热门文章

  1. 在Redhat 5.0 上安装Eclipse 3.6
  2. Uva 11464 偶数矩阵
  3. GIS-001-gdal软件下载地址
  4. C#动态属性(.NET Framework4.5支持)
  5. android adb常用指令
  6. 仿win8磁贴界面以及功能
  7. 转:C#动态循环生成button怎么分别写他们的事
  8. poj3687Labeling Balls
  9. 软件开发项目的风险管理 (转)
  10. 关于在SVG中如何实现gif动画的问题?