黑马程序员技术交流社区

标题: 一个有趣的问题 [打印本页]

作者: 黑马涂冰冰    时间: 2012-4-5 22:25
标题: 一个有趣的问题
今天发现了一个比较有趣的问题,具体如下:
  1. package bing;

  2. /**
  3. * @author bing
  4. * 关于int、Integer地址比较
  5. */
  6. public class IntAndInteger {
  7.    
  8.         static int out = 1000 ;
  9.        
  10.         public static void main(String[] args) {

  11.                 int inner1 = 1000 ;
  12.                 int inner2 = 1000 ;
  13.                
  14.                 Integer inner3 = 1000 ;
  15.                 Integer inner4 = 1000 ;
  16.                
  17.                 Integer inner5 = 100 ;
  18.                 Integer inner6 = 100 ;
  19.                
  20.                 System.out.println(out==inner1); //true
  21.                
  22.                 System.out.println(inner1==inner2); //true
  23.                
  24.                 System.out.println(inner1==inner3); //true
  25.                
  26.                 System.out.println(inner3==inner4); //false
  27.                
  28.                 System.out.println(inner5==inner6); //true
  29.                
  30.         }

  31. }
复制代码

作者: niceBoy    时间: 2012-4-5 23:02
???这是基本数据类型,==是比较值吧,在比较对象的时候==才是比较地址吧
作者: 蒙武辉    时间: 2012-4-5 23:08
楼主说得对
作者: foxpeter    时间: 2012-4-5 23:26
System.out.println(inner5==inner6); //true

相等是因为Integer采用了享元设计模式 好像值在-127-128之间的Integer都会只有一个对象。
这样可以达到一定的节省内存的功能。
作者: 黑马涂冰冰    时间: 2012-4-5 23:40
niceBoy 发表于 2012-4-5 23:02
???这是基本数据类型,==是比较值吧,在比较对象的时候==才是比较地址吧 ...

指向的是常量池,说法不一样而已
作者: 黑马涂冰冰    时间: 2012-4-5 23:47
foxpeter 发表于 2012-4-5 23:26
System.out.println(inner5==inner6); //true

相等是因为Integer采用了享元设计模式 好像值在-127-128之间 ...

嗯,包装类好像都运用了这种模式
作者: lvwenwen88    时间: 2012-4-5 23:54
这样可以达到一定的节省内存的功能。

作者: lvwenwen88    时间: 2012-4-5 23:55
这样可以达到一定的节省内存的功能。

作者: 方江    时间: 2012-4-6 01:17
貌似视频中是这样说的,JDK在1。几升级后出现了这样的新特状,当你创建的值在—127~128之间时,他不会再去创建新的地址值。而是直接指向了这个地址。所以==的时候为turn.当你创建出的值超过这个范围时,他就会自己创建新的了,所以为flase
嘎嘎。貌似13天或者14天的视频里面有写。
作者: 黑马涂冰冰    时间: 2012-4-6 01:26
方江 发表于 2012-4-6 01:17
貌似视频中是这样说的,JDK在1。几升级后出现了这样的新特状,当你创建的值在—127~128之间时,他不会再去 ...

这个帖子主要关于三方面的知识:
1、常量池
2、你提到的......
3、自动装箱和拆箱
作者: 方江    时间: 2012-4-6 17:20
黑马涂冰冰 发表于 2012-4-6 01:26
这个帖子主要关于三方面的知识:
1、常量池
2、你提到的......

:lol冰姐碉堡了。冰姐求合体~~我发现我自己答的都不知道是啥了。
作者: 黑马涂冰冰    时间: 2012-4-6 17:46
方江 发表于 2012-4-6 17:20
冰姐碉堡了。冰姐求合体~~我发现我自己答的都不知道是啥了。

哈哈,我不喜欢男淫......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2