如何进行显式铸造

Rav*_*avi 7 java int byte casting

可能重复:
Java + =运算符

我们可以将值添加到任何变量中,b+=8或者b=b+8两者都将返回添加8到变量中的值b.我在采访中得到了这个问题

byte b=7;
b=b+8; //compile error
Run Code Online (Sandbox Code Playgroud)

我写了什么会输出,compile time error因为添加byteint将会int(我相信),因此,我们正试图将int价值存入byte.但是,当我自己尝试下面的代码时

byte b=7;
b+=8; //OK
Run Code Online (Sandbox Code Playgroud)

然后,上面的代码编译并运行完美,没有任何错误并返回15.现在,我的问题是为什么以及如何?我的意思是,为什么它不需要显式铸造?

Azo*_*ous 1

b = b + 8这是和的唯一区别b += 8

编译器自动进行强制转换。