日期:2014-05-20  浏览次数:20690 次

数值类型提升问题
public class TestOperation {
  public static void main(String[]args){
  int x=10;
  x=x+3;
  x+=3;
  byte b1=10+20;
  byte b2=b1+20;
  b2 +=10;
   
  b2=120;
  b2+=20;
   
   
  System.out.println(62);
   
  byte b4=79;
   
  int i=~b4;
  System.out.println(i);
   
   
   
  }




在这个程序中, byte b2=b1+20;会出现报错,提示需要提升数值类型为这样: byte b2=(byte) (b1+20);才可以,为什么?

------解决方案--------------------
b1 + 20 的结果是整形
------解决方案--------------------
因为20在java里默认是int型 byte与int相加会自动转型为int 所以赋值给byte类型的b2时就要强制转换一下喽。
------解决方案--------------------
关于表达式类型:
1、byte型、short型和char型将被自动提升到int型
2、整个算数表达式类型自动提升到与表达式中最高等级操作数同样的类型

这是基础哇
------解决方案--------------------
右边有变量就会出错。要是常量就没事。默认类型是int