黑马程序员技术交流社区
标题:
一个小问题
[打印本页]
作者:
李小石
时间:
2014-5-27 00:09
标题:
一个小问题
本帖最后由 李小石 于 2014-5-27 09:50 编辑
public class Test_4 {
public static void main(String[] args) {
int a =2;
byte b = 2;
if(a == b){
System.out.print(true);
}
}
}
复制代码
作者:
李小石
时间:
2014-5-27 00:11
忘了注释,问题没出来
作者:
李小石
时间:
2014-5-27 00:12
a,b的数据类型不同,为什么结果却是可以打印为真了?
作者:
zhrnghgwsws
时间:
2014-5-27 00:18
int 2等于是0000 0000 0000 0000 0000 0000 0000 0010
byte 2等于是0000 0010
==比较他们两个的二进制值是相等的。
作者:
朱晓盼
时间:
2014-5-27 00:28
我认为这个问题要考虑数据类型提升的情况,整数的默认类型是int型,byte型数据参与运算,会自动提升为int型
作者:
附耳细说
时间:
2014-5-27 01:06
楼上 正解
我补充下吧
整数表达式可以是int基本类型或Integer包装类型
byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型是可以当做整型使用的。为什么可以转换楼上的楼上给出了答案,不错就是字节长度截取。这就是为什么相等的原因。
同理还可以进一步思考,如果把byte改成double或者float,猜猜会得到什么结果?如果byte和int取值大于128,会是什么结果?然后想想为什么,然后你就学会了类型转换,吐槽下 手机打字好不方便~
作者:
李小石
时间:
2014-5-27 09:52
附耳细说 发表于 2014-5-27 01:06
楼上 正解
我补充下吧
整数表达式可以是int基本类型或Integer包装类型
谢谢啦,非常感谢
作者:
满面春风
时间:
2014-5-27 09:59
== 符号比较的是两边的值是否相等,equas 符号比较的是两边的值的地址是否一样,所以答案是true
作者:
code2014
时间:
2014-5-27 11:36
学习了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2