首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

对于Integer.valueOf

2011-12-23 
关于Integer.valueOf?为什么boolean a (Integer.valueOf(1) Integer.valueOf(1))boolean b (I

关于Integer.valueOf?
为什么
  boolean a = (Integer.valueOf("1") == Integer.valueOf("1"));
  boolean b = (Integer.valueOf("1") > Integer.valueOf("1"));
  boolean c = (Integer.valueOf("1") < Integer.valueOf("1"));
  System.out.println(a);
  System.out.println(b);
  System.out.println(c);


输出结果:
false
false
false

是Integer类型不能进行比较么?

[解决办法]
Integer是一个对象,如果直接用==,<,>这些比较是符合对象比较法则
并不是值~`
[解决办法]
看看jdk的源代码就知道了
Integer.valueOf 生成了新的Integer对象
[解决办法]
Integer.parse(str)中实际上是new Integer(parseInt(s, 10));

也就是总是返回一个新的Integer对象,所以a是false



Integer.valueOf("1") > Integer.valueOf("1")

实际上被编译器改成Integer.valueOf("1").intValue() > Integer.valueOf("1").intValue();
所以是false
[解决办法]
Integer是封装类型,用操作符比较的是引用。
[解决办法]
2楼说的对,生成新对象,所以是false.
[解决办法]
产生新类
eques进行比较
[解决办法]
哥哥,不是对象杂能用==比较呢,如果你确实要这样的话,哪就利用1.5以后的自动拆箱功能,如下

int a1 = (Integer.valueOf("1")
int a2 = Integer.valueOf("1")); 
boolean a = a1==a2;

System.out.println(a); 


注JDK1。5以后才能这样子,给分吧,

热点排行
Bad Request.