0
我知道,在默认情况下的数字存储为整数Java编写,但Java中的速记运算符如何与普通运算符不同?
byte x = 10;
x = x + 10;
是给错误而
byte x = 10;
x += 10;
正在编制精细
我知道,在默认情况下的数字存储为整数Java编写,但Java中的速记运算符如何与普通运算符不同?
byte x = 10;
x = x + 10;
是给错误而
byte x = 10;
x += 10;
正在编制精细
JLS有一个答案你
E1形式的复合赋值表达式op = E2相当于E1 =(T)((E1)op(E2)),其中T是E1的类型,只是E1只评估一次。
short x = 3;
x += 4.6;
,并导致X具有值7,因为它等同于:
short x = 3;
x = (short)(x + 4.6);
所以你的情况你的第二个声明equlas到
x = (byte) x + 10;
这就是原因所在编译器很高兴。
当你做+ =这是一个复合语句,编译器内部转换它。在第一种情况下,由于它是直接声明,因此编译器直接向您大喊:) –
thanks @ꜱᴜʀᴇꜱʜᴀᴛᴛᴀ –