Java中的变量类型转换

Java中变量类型转换

  • 把一种数据类型的值赋值给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式不同可以分为自动类型转换和强制类型转换。

自动类型转换:自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显示的进行声明。自动类型转换需要满足两个条件:一两种数据类型彼此兼容,二目标类型的取值大源类型的取值范围。例如:

byte b = 6;
//byte类型的变量赋值给int类型,无需特殊声明,因为int取值大于byte
int i = b;
  1. 整数类型之间可以实现转换,byte类型的数据可以赋值给short,int,long类型的变量,short,char类型的数据可以赋值给int,long类型的变量,int类型的数据可以赋值给long类型的变量。
  2. 整数类型转换为float类型,byte,short,int,long,char类型的数据可以赋值给float类型的变量。
  3. 其他类型转换为double类型,byte,short,int,long,char,float类型的数据可以赋值给double类型的变量。

强制类型转换:强制类型转换也叫显示类型转换,指的是两种类型彼此不兼容。或者目标类型的取值范围小于源类型时,自动类型转换无法进行,需要进行强制类型转换。
转换格式:目标类型  变量 = (目标类型)值

int i = 10;
//如果不进行强制类型转换,编译不通过
byte b = (byte)i;

值得注意的是,在进行强制类型转换时,会发生取值较大的数据类型向取值范围较小的数据类型时,会发生数据精度的丢失。

  • 表达式类型的自动提升

变量在表达式中进行运算时,也可能发生自动类型转换,这就是表达式类型的自动提升

public class Demo {
    public static void main(String[] args) {
        byte b1 = 10;
        byte b2 = 20;
        //编译不通过
        byte b3 = b1 + b2;
        //需要做下面修改,因为b1+b2运算时表达式自动提升到int类型,所以需要进行强制转换
        byte b4 = (byte)(b1 + b2);
        System.out.println(b4);
    }
}

你可能感兴趣的:(Java基础知识,java)