给byte/short/char类型变量赋值时有发生数据类型转换吗
数值型数据的字面值默认是int类型,int类型数据范围比byte/short/char的数据范围都大,为什么赋值时没有进行强制类型转换?
byte b1 = 40 ; // 将int类型的40 赋值给 byte类型的b1
60
收起
正在回答 回答被采纳积分+1
2回答
迎接晨曦
2020-11-28 10:49:30
同学你好,重新给同学整理一下数据转换的思路,如下所示:
1. 关于同学的理解,如下所示:
同学这样理解是可以的,具体详情如下所示:
100L因是L结尾的,会解析为long类型,long类型范围比int类型范围大,则进行赋值时,需要进行强制转换。
byte类型比int类型小,则byte转换为int类型时,可以自动转换,但int类型转换为byte 类型,就需要进行强制转换。自动转换顺序如下所示:
总结: 范围小的转换为范围大的,可以直接进行转换。则但范围大的转换为范围小的,则需要进行强制转换。
2. byte 类型属于整型类型,在byte范围(范围:-128 ~ 127)内可以直接使用整型进行赋值,不需要进行转换。但超出范围进行赋值,代表是int类型转换为byte 类型,int范围比byte 范围大,则需要进行强制转换,也就是超出byte范围内的数值就需要进行强制转换了。如下所示:
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星