黑马程序员技术交流社区

标题: 一个小问题 [打印本页]

作者: 李小石    时间: 2014-5-27 00:09
标题: 一个小问题
本帖最后由 李小石 于 2014-5-27 09:50 编辑
  1. public class Test_4 {

  2.         public static void main(String[] args) {
  3.          int a =2;
  4.          byte b = 2;
  5.          
  6.          if(a == b){
  7.                  System.out.print(true);
  8.          }
  9.      }

  10. }
复制代码


作者: 李小石    时间: 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