初学JAVA一些类型运算以及类型转换细节

    xiaoxiao2021-03-25  68

    在java中,如下编写

    byte b = 4;

    b = 3 + 7;

    编译能通过,但如果像下面这样编写,则编译无法通过,关键在于最后一句b=b1+b2上

    byte b = 3;

    byte b1 = 2;

    byte b2 = 9;

     b = b1 + b2;

    原因:

    首先,定义byte b = 4;为什么能通过,是因为java中默认整型都为int类型,所以java默认 4 为int 型,本来按类型是不能将4赋值给变量b的,但是编译器检查4这个数值不超过byte的取值范围(-128~127),所以编译器自动强制类型转换将int型转化成byte型,将4赋给了b。

    而在下面一个例子中,由于b1与b2都为变量,编译时无法确定值,编译器无法确定b1 + b2的值是否会超过byte的取值范围,所以编译的时候报错:损失精度!

    而:

    int x = 4;

    int x1 = 3;

    int x2 = 98;

    x = x1 + x2;

    编译时却可以通过,是因为运算结果一定为整数,java默认为整数是int所以可以编译通过(好吧,这里我也不太懂,望大神解答)

    转载请注明原文地址: https://ju.6miu.com/read-34531.html

    最新回复(0)