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);才可以,为什么?

解决方案 »

  1.   

    楼主要仔细看看java基础书籍中关于数值计算中的类型自动提升部分。
      

  2.   

    因为20在java里默认是int型  byte与int相加会自动转型为int  所以赋值给byte类型的b2时就要强制转换一下喽。
      

  3.   

    关于表达式类型:
    1、byte型、short型和char型将被自动提升到int型
    2、整个算数表达式类型自动提升到与表达式中最高等级操作数同样的类型这是基础哇
      

  4.   

    右边有变量就会出错。要是常量就没事。默认类型是int