Java + =编译器/ jre错误?
这个问题在这里已经有了答案:
这是+ =从C
开始工作的方式。 这是“功能”而不是bug
请参阅Java的+ =, - =,* =,/ =复合赋值运算符
顺便说一句你可以试试这个
char ch = '0';
ch *= 1.1; // ch = '4'
另见我的博文http://vanillajava.blogspot.com/2012/11/java-and-implicit-casting.html
int a = a + (3/2.0);
因为:
int
+ double
导致一个double
a
被引用为int
double
投掷到int缺失 int a += 3/2.0;
编译以来:
int
+ double
导致一个double a
被引用为int
double
可以转换为int
,幸运的是,编译器添加了一个隐式类型转换,类似于:
int a = (int)(a+ 3/2.0);
。 这是由于特殊的op=
符号,它比编译器的基本赋值运算符: =
更聪明。
这不是一个错误,它发生了一个隐式转换。
例如。
Byte b=3;
b+=5; //compiles
b=b+5; //doesnt compiles
这里发生的事情是
a=a+3/2.0; // 3/2.0 produces double , it add int to double but cant convert it implicitly to int.
a += 3/2.0; // here implicit conversion after addition of a to 3/2.0 happends from double to int
链接地址: http://www.djcxy.com/p/73651.html