Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果。因此,如果把两个byte类型值相加,最后会得到一个int类型的结果。如果需要得到byte类型结果,必须将这个int类型的结果显式转换为byte类型。例如,下面的代码会导致编译失败:
class BadArithmetic {
static byte addOneAndOne() {
byte a = 1;
byte b = 1;
byte c = (a + b);
return c;
}
}
当遇到上述代码时,javac会给出如下提示:
type.java:6: possible loss of precision
found : int
required: byte
byte c = (a + b);
^
1 error
为了对这种情况进行补救,必须把a + b所获得的int类型结果显式转换为byte类型。代码如下:
class GoodArithmetic {
static byte addOneAndOne() {
byte a = 1;
byte b = 1;
byte c = (byte)(a + b);
return c;
}
}
该操作能够通过javac的编译,并产生GoodArithmetic.class文件。
博客主要介绍Java中byte、short和char类型运算操作,这些类型运算时会先转换为int类型,运算结果也是int类型。如两个byte类型值相加得int结果,若要byte结果需显式转换,还给出编译失败和补救的代码示例。
983

被折叠的 条评论
为什么被折叠?



