自动类型的转换

由低级到高级java进行自动转换
低级到高级的转换范围:
byte ->short ->char->int->long->float->double

  • 类型范围小的变量,可以直接赋值给类型范围大的变量。
  1. byte a=90;
  2. int b=a;
  1. 2
  1. char ch='a';
  2. int a=ch;
  3. System.out.println(a);

得到97的ASLL码

为什么要进行类型转换

  • 存在不同类型的变量赋值给其他变量

    自动类型的转换是什么样的‘

  • 类型范围小的变量,可以直接赋值给类型范围大的变量。

表达式的自动类型转换

  • 在表达式中小范围的变量会自动转换成当前较大范围的类型再运算

byte ->short ->char->int->long->float->double

注意事项:
  • 表达式的最终结果类型由表达式中的最高类型决定

    1. byte a=10;
    2. int b=20;
    3. double c=1.0;
    4. double rs=a+b+c;
    5. System.out.println(rs);

    得到最高类型的和

  • 在表达式中,byte,short,char是直接转换成int类型参与运算的。

如byte为例

  1. byte a=120;
  2. byte b=124;
  3. int c;
  4. c= (a+b);
  5. System.out.println(c);

得到244,如果是不转换成int的话就会出错。

强制类型转换

  • 大范围的变量赋值给小范围的变量。

数据类型 类型名称=(数据类型)初始值
如:

  1. int a=126;
  2. byte b=(byte)a;

输出得到126,
注意:强制类型转换可能造成数据(丢失)溢出;
浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

  1. double a=99.5;
  2. int b=(int) a;
  3. System.out.println(b);

得到整数部分99小数丢掉了