关于“==”比较疑问 http://blog.csdn.net/ying_24ying/article/details/7068174貌似可以说明一些问题概念上的事情我也不清除 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题我也纠结很久。但我的猜想是当对象与基本数据类型进行比较的时候,应该是将Integer转换为int类型之后再进行比较。也符合数据类型一一致的要求。这也是我个人觉得,仅供参考。 Integer和栈中基本类型int逻辑运算的时候会自动转型,转int类型,两个Integer==Integer就不会相等了。 Integer的数据,为了和int数据进行比较,进行了拆包,所以才是true。如果一个基本数据类型要跟对象进行比较,结果只能是编译出错。 楼主可以去了解一下 java 拆包的理论知识。。 integer自动将-128~127只将的整数转为int类型 你用 128试就不是 true 了,#7 楼正解~ JDK5中的新功能吧,自动装箱,自动拆箱! 通过断点可以发现 Integer的intValue方法被调用证明Integer对象拆箱成int型与数字比较=========================================================-128~127的Integer不是自动拆成int型看源码就知道Integer 里面有个叫 IntegerCache的类缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)所以指向的Integer是一样的,所以 == 才会true手动 new Integer(i) 就会做成不等了 Integer的数据,为了和int数据进行比较,进行了拆包,所以才是true。如果一个基本数据类型要跟对象进行比较,结果只能是编译出错。 通过断点可以发现 Integer的intValue方法被调用证明Integer对象拆箱成int型与数字比较=========================================================-128~127的Integer不是自动拆成int型看源码就知道Integer 里面有个叫 IntegerCache的类缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)所以指向的Integer是一样的,所以 == 才会true手动 new Integer(i) 就会做成不等了手动 new Integer(i) 就会做成不等了???不太明白,能给段事例代码么,谢谢 说白了就是所谓的自动装箱和自动拆箱的问题了。因为e 和 f 类型不一样。System.out.println(new Integer(1)==new Integer(1));的结果就是false。俩对象,没有重载“==”,肯定不一样了。 通过断点可以发现 Integer的intValue方法被调用证明Integer对象拆箱成int型与数字比较=========================================================-128~127的Integer不是自动拆成int型看源码就知道Integer 里面有个叫 IntegerCache的类缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)所以指向的Integer是一样的,所以 == 才会true手动 new Integer(i) 就会做成不等了手动 new Integer(i) 就会做成不等了???不太明白,能给段事例代码么,谢谢 Integer a = 121; Integer b = 121; Integer c = new Integer(121); System.out.println(a == b); System.out.println(a == c); int d = 121; Float e = 121.0f; System.out.println(d == e); 传值不成功 eclipse 打包问题 JAVA字节与字符的问题 关于import的问题 求wav转AMR的类库,vc,java,c#的都行 CMP里的主键问题!急急急 如果没有指针,如何动态生成新的对象? 使用visiBroker,汉字变乱码。 JDBC 如何获取外键所引用的列? 随机24字节Byte Array通过base64编码获得32字节字符串 Process方法问题 一道关于垃圾收集器的面试题
也符合数据类型一一致的要求。
这也是我个人觉得,仅供参考。
如果一个基本数据类型要跟对象进行比较,结果只能是编译出错。
证明Integer对象拆箱成int型与数字比较=========================================================
-128~127的Integer不是自动拆成int型
看源码就知道Integer 里面有个叫 IntegerCache的类
缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)
所以指向的Integer是一样的,所以 == 才会true
手动 new Integer(i) 就会做成不等了
如果一个基本数据类型要跟对象进行比较,结果只能是编译出错。
证明Integer对象拆箱成int型与数字比较=========================================================
-128~127的Integer不是自动拆成int型
看源码就知道Integer 里面有个叫 IntegerCache的类
缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)
所以指向的Integer是一样的,所以 == 才会true
手动 new Integer(i) 就会做成不等了
手动 new Integer(i) 就会做成不等了???不太明白,能给段事例代码么,谢谢
证明Integer对象拆箱成int型与数字比较=========================================================
-128~127的Integer不是自动拆成int型
看源码就知道Integer 里面有个叫 IntegerCache的类
缓存了-128~127的Integer对象,自动装包时调用Integer.valueOf(int i)
所以指向的Integer是一样的,所以 == 才会true
手动 new Integer(i) 就会做成不等了
手动 new Integer(i) 就会做成不等了???不太明白,能给段事例代码么,谢谢 Integer a = 121;
Integer b = 121;
Integer c = new Integer(121);
System.out.println(a == b);
System.out.println(a == c);
int d = 121;
Float e = 121.0f;
System.out.println(d == e);