黑马程序员----java学习笔记之由int转换成byte

------- android培训java培训、期待与您交流! ----------

          1、java程序中默认的整数数值的数据类型为int,默认的小数点数值的数据类型为double。

        

           

           

                1)和2)都是把一个int型的数值赋值给一个byte型,但1)并没有提示转换类型错误。这是因为在编译器遇到int型转换成byte型时,先对数值进行判断,如果该数值在byte型数据表示的范围之内则不报错,否则则报错!下面再看一个例子。

               

                为什么同样是int型的数据同样在byte数值范围内又同样需要由int转换成byte,第一行的程序没报错,第二行的程序却报了错呢?对比可知,第一行的等号右边是固定数值而第二行的等号右边含有变量,所以:

                综上所述,编译器在遇到需要由int转换成byte时,首先判断的应该是该int是固定数值,还是含有变量的代数式(不管是含+、-、*、/等等的代数式)。如果是前者就继续判断该固定数值是不是在byte的数值范围内,在就可变换,不在就报错;如果是后者,那就直接报错。

              可能你还会有疑问,为什么含有变量的代数式在遇到由int转变成byte时报错,固定数值就不报错?我个人认为,因为代数式里含有变量,所以它的运算结果就是不确定的。在含有该代数式的代码行前面的代码里,变量可能会有不同的数据。有的数据可以使该代数式的运算结果在byte的数值范围内,而其它的则不能。就想4)中b+2的结果是5在byte的数值范围内,但如果b的值不是3,是127(因为b是byte变量,所以你可以给它赋127的),那么b+2的运算结果就不在byte的数值范围内了!那么此时该含有代数式的代码行就不是正确的了,所以编译器不会通过,会报错!

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值