数据类型转换和强制转换

自动类型转换
指的是容量小的数据类型可以自动转换为容量大(占多少空间)的数据类型。如下图中,黑色实线表示数据无丢失的自动类型转换,虚线表示在转换中可能有精度丢失。

特例:int 可以转成short、byte、char,只要不超过要转换为的类型的表述范围
public class Test{
public static void main(String[] args){
//容量小的转换为容量大的
int a = 1234;
long b = a;
double h = a;
// int c = b; // 会报错
char c = 97; //97是整型
byte d = 123; // 123也是整型
System.out.println(b);
System.out.println(h);
System.out.println(c);
System.out.println(d);
}
}
强制类型转换
可能损失精度,语法 (type)var
public class Test{
public static void main(String[] args){
double a = 3.9415;
int b = (int) a;
System.out.println(b);
int c = 97;
char d = (char) c;
System.out.println(d);
//强制转换超过类型的表述范围会出现一个没有意义的数字,并不会报错
int e = 300;
byte f = (byte) e;
System.out.println(f);
}
}

类型转换的常见错误
1.操作数太大了要留意是否会溢出,尤其是整数操作时
2. L和l的问题:
(1)命名变量含有I时,用L好区分;
(2) long类型使用L,不用小写l
一种 int 乘法转 long 的方法
int salary = 2e9; // 未超过21亿的范围
int year = 20;
long total = 1L * year * salary;

浙公网安备 33010602011771号