01 隐式转换(自动转换)

小的数据类型和大的数据类型计算的时候,小的数据类型提升为大的数据类
      低级数据类型自动转换为高级数据类型
      大小顺序为  byte ,short ,char<int < long < float< double
      byte/short/char 相互运算时时 都会提成为int类型     包括自身和自身运算

02 强制转换

int  x = 3;
              byte b = 4
              b = x + b;

     x和b的和7是一个int数据类型的, 要赋值给byte类型的b,会损失精度
     需要进行强制类型转换   b = (byte)(x+b);
               
     数据类型强转会损失精度,具体原理需要再学习二进制数据类型的范围,补码,原码,反码等知识

   可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换

   int转byte  int是32位而byte是8位的,所以,int类型的高24位将会被丢弃

02 变量相加 和 常量相加

(1) 变量相加

byte  b1 = 3;      
     byte  b2 = 4;
     byte b3 = b2 + b1;

     会报错
   b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面的具体值,会提升为int int再赋值为byte 会报错  所以会报错

(2) 常量相加

byte b =  3 + 4;            输出为7.           
 java编译器有常量优化机制
会判断两个常量的和在byte的范围之间,就会正常赋值给byte类型   
--------------------------------------------------------------------------------
01   隐式转换(自动转换)

     小的数据类型和大的数据类型计算的时候,小的数据类型提升为大的数据类
      低级数据类型自动转换为高级数据类型
      大小顺序为  byte ,short ,char<int < long < float< double
      byte/short/char 相互运算时时 都会提成为int类型     包括自身和自身运算

02 强制转换

int  x = 3;
              byte b = 4
              b = x + b;

     x和b的和7是一个int数据类型的, 要赋值给byte类型的b,会损失精度
     需要进行强制类型转换   b = (byte)(x+b);
               
     数据类型强转会损失精度,具体原理需要再学习二进制数据类型的范围,补码,原码,反码等知识

   可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换

   int转byte  int是32位而byte是8位的,所以,int类型的高24位将会被丢弃

02 变量相加 和 常量相加

(1) 变量相加

byte  b1 = 3;      
     byte  b2 = 4;
     byte b3 = b2 + b1;

     会报错
   b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面的具体值,会提升为int int再赋值为byte 会报错  所以会报错

(2) 常量相加

byte b =  3 + 4;            输出为7.           
 java编译器有常量优化机制
会判断两个常量的和在byte的范围之间,就会正常赋值给byte类型