关闭

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

425人阅读 评论(0) 收藏 举报
------- 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的数值范围内了!那么此时该含有代数式的代码行就不是正确的了,所以编译器不会通过,会报错!

       

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11980次
    • 积分:399
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档