A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

king_EE

中级黑马

  • 黑马币:24

  • 帖子:9

  • 精华:0

© king_EE 中级黑马   /  2015-9-21 09:44  /  381 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      Integer integer1 = 100;
      Integer integer2 = 100;
      System.out.println("integer1==integer2: " + (integer1 == integer2));// true  自动装箱的两个缓存中的 Integer对象的引用比较
      System.out.println("integer1.equals(integer2): " + (integer1.equals(integer2)));// true
      System.out.println("integer1.compare(integer2): " + integer1.compareTo(integer2));// 0   
      Integer integer3 = 200;
      Integer integer4 = 200;
      System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较
     //红色的这两行代码输出结果为什么不同,谁可以给我详解,谢谢啦
      System.out.println("integer3>integer4: " + (integer3 > integer4)); // false 将两个对象拆箱,再比较大小
      System.out.println("integer3.equals(integer4): " + (integer3.equals(integer4)));// true
      System.out.println("integer3.compare(integer4): " + integer3.compareTo(integer4));// 0   
      Integer integer5 = new Integer(100);
      Integer integer6 = new Integer(100);
      System.out.println("integer5==integer6: " + (integer5 == integer6)); // false 两个不同的Integer对象引用的比较
      System.out.println("integer5.equals(integer6): " + (integer5.equals(integer6)));// true
      System.out.println("integer5.compare(integer6): " + integer5.compareTo(integer6));// 0   
      int int1 = 100;
      System.out.println("integer1==int1: " + (integer1 == int1));// true  Integer缓存对象拆箱后与int比较
      System.out.println("integer1.equals(int1): " + (integer1.equals(int1)));// true
      System.out.println("integer1.compare(int1): " + integer1.compareTo(int1));// 0      
      int int2 = 200;
      System.out.println("integer3==int2: " + (integer3 == int2));// true  Integer对象拆箱后与int比较
      System.out.println("integer3.equals(int2): " + (integer3.equals(int2)));// true
      System.out.println("integer3.compare(int2): " + integer3.compareTo(int2));// 0

2 个回复

倒序浏览
  1. Integer integer3 = 200;
  2.       Integer integer4 = 200;
  3.       System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较
  4.      //红色的这两行代码输出结果为什么不同,谁可以给我详解,谢谢啦
复制代码
JDK1.5后,对于Integer 对象的值如果没有超byte 的范围-128-127的后,就不会new ,内存里有的话,就直接使用
所以
  1.   Integer integer1 = 100;
  2.       Integer integer2 = 100;
  3.       System.out.println("integer1==integer2: " + (integer1 == integer2));// true  自动装箱的两个缓存中的 Integer对象的引用比较
复制代码

便是一旦超过byte范围-128-127,不管有没有都有new
  1. Integer integer3 = 200;// new Integer(200)
  2. Integer integer4 = 200;//new Integer(200)
复制代码
只是省了自动装箱,等于new 了一个新的对象,所以==是false


回复 使用道具 举报
多谢分享学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马