在Java中用字节递增操作

Pra*_*een 4 java

当我们尝试使用递增运算符和加法运算符递增字节变量时会发生什么.

public class A {
    public static void main(final String args[]) {
        byte b = 1;

        b++;

        b = b + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我哪里可以找到释放这些小东西的来源?请帮帮我.

Roh*_*ain 11

所不同的是,有一个implicit casting++从运营商intbyte,反之,你就必须做到这一点explicitly的情况下,你使用b = b + 1

b = b + 1;  // Will not compile. Cannot cast from int to byte
Run Code Online (Sandbox Code Playgroud)

你需要一个明确的演员: -

b = (byte) (b + 1);
Run Code Online (Sandbox Code Playgroud)

然而,b++将工作正常.它(++操作者)自动转换的值b + 1是一个int对一个byte.


这清楚地列在JLS - §15.26.2化合物分配操作员中: -

E1 op = E2形式的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型,除了E1仅被评估一次


请注意,操作b + 1将为您提供类型的结果int.所以,这就是你需要在第二次任务中进行明确演员的原因.