字节加字节?所有操作数自动转换为int?

时间:2018-01-20 13:01:16

标签: java types

这是代码,最后一行无法编译出来的结果是int?所以,我可以 解决java进程中的每个非整数类型作为算术中的整数? 我正在向所有人学习英语,谢谢。

  byte a=0;
    for(int i=0;i<128;i++){
        a=(byte)i;
     }
     byte b=1;
     byte c=0;
     c=b+a;
     System.out.println(b);

2 个答案:

答案 0 :(得分:1)

在将两个操作数转换为shorts并导致bytes之后,两个intint之间的java中的添加操作发生。因此,您需要将结果转换为byte,因为它是有损转换。见this

答案 1 :(得分:0)

您必须将aab添加的结果投射到一个字节,因为a是一个整数及其值可能不适合一个字节 例如:

c = (byte) ((byte) a + b);

c = (byte) (a + b);

这样,b被隐式转换为整数,然后结果再次转换为一个字节。