当前位置: 代码迷 >> J2SE >> c=c+a 与 c+=a 的差异
  详细解决方案

c=c+a 与 c+=a 的差异

热度:120   发布时间:2016-04-23 20:20:37.0
c=c+a 与 c+=a 的区别
本人是新手,在学习java的过程中,发现一个问题,不得其解,请教各位大神
先上问题:
class  Demo
{
public static void main(String[] args) 
{
byte a=1;
byte b=3;
byte c=a;
c=c+b;
System.out.println(c);
}
}
/* 
编译结果:
---------- JAVAC ----------
Demo.java:8: 错误: 可能损失精度
c=c+b;
   ^
  需要: byte
  找到:    int
1 个错误
*/


但是如果把代码写成:
class  Demo
{
public static void main(String[] args) 
{
byte a=1;
byte b=3;
byte c=a;
c+=b;
System.out.println(c);
}
}
/*
编译结果:
---------- JAVAC ----------
输出完成 (耗时 0 秒) - 正常终止
*/


那么问题就来了, c=c+b   与 c+=b 难道有什么区别吗?结果上是没有区别,但是在编译过程中却有区别,区别在哪呢?
------解决方案--------------------
"+"是逻辑运算符,在做byte之间做运算时,如 c = c+b,c+b的运算结果的数据类型会自动转换为了int类型
想将int类型转换为byte类型,就会报错:只有 c = (byte)(c+b);就不会出错;
 c += b;这个运算的,数据类型是以 c的数据类型为标准的。所以不需要转换。
------解决方案--------------------
+=有自动转换的功能  将 int 转换为byte
  相关解决方案