Java数据类型转换

392 阅读2分钟

1. 数据类型转换

1.1 基本数据类型自动转换:

将取值范围小的数据类型转换成取值范围大的数据类型,与数据类型所占字节大小无关

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

char------^

public class BasicDemo1 {
    public static void main (String[] args){
        long l = 1234L;
        int i =123;
        short s = 12;
        char c = 'a';
        
        l = i;
        i = l; //错误:不兼容的类型:从long转换到int可能会有损失
        
        i = c;
        s = c; //错误:不兼容的类型:从char转换到short可能会有损失
        c = s; //错误:不兼容的类型:从short转换到char可能会有损失
    }
}

1.2 基本数据类型强制转换:

格式:

取值范围较小的数据类型 变量名 = (取值范围较小的数据类型) 数据值

int a = (int) 3.14

1.3 数据类型转换的注意事项:

  • 数据类型转换是七种数据类型的转换,与boolean数据类型无关
  • 不推荐使用强制转换
  • byte, short, char这三种数据类型只要参与运算,会将各自的数据类型自动提升成int再进行计算

1.4 常量:

在程序中其值不可以发生改变的量

常量的分类:

  • 字面值常量

    • 整数字面值常量 System.out.println(3);
    • 小数字面值常量 System.out.println(3.14);
    • 字符字面值常量
    • 布尔字面值常量
    • 字符串字面值常量
    • 空字面值常量(null, 不可以使用输出语句直接打印)
  • 自定义常量

字面值常量的注意事项:

  1. 在程序中,给byte,short,char声明初始化的时候,如果初始化值是字面值常量,且该数据值还在其取值范围内,在内存中的常量区自动将其优化给该数据类型,并非强制类型转换. 例如 byte b = 3; 这里并不是强制把int3转换成byte格式,而是常量区的优化结果.
  2. 在程序中,如果将数学运算的结果赋值给一个变量,运算符号两边的量都是字面值常量,且运算后的结果还在其数据类型的取值范围内,在运行(java)之前,在编译时会自动将其进行数学运算,将运算的结果赋值给左边的变量