Java基础系列(10)- 类型转换
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。运算中,不同类型的数据先转换为同一类型,然后进行运算。
低 -------------------------------------------------------------- 高
byte,short,char ---> int ---> long ---> float ---> double
类型转换常见有两种:强制转换和自动转换
- 由低到高自动转换
- 由高到低需要强制转换
强制转换
// 强制转换 由高到低 (类型)变量名 int i = 128; byte b = (byte) i; // 内存溢出,byte型最大是127 System.out.println(i); System.out.println(b);
自动转换
// 自动转换 低到高 int a = 13; double a1 = a; System.out.println("=============↓↓↓↓自动转换↓↓↓↓================="); System.out.println(a); System.out.println(a1);
注意点
/* 注意点 1.不能对布尔类型进行转换 2.不能把对象类型转换为不相干的类型 3.在把高容量转换到低容量的时候,强制转换 4.转换的时候可能出现内存溢出,或者精度问题 */ System.out.println("=============↓↓↓↓高到低精度损失↓↓↓↓================="); System.out.println((int)23.7); System.out.println((int)-45.85f);
// JDK7以后新特性,数字之间可以用下划线分隔,便于书写 // 计算时要注意内存溢出问题,如下 System.out.println("=============↓↓↓↓注意点:内存溢出↓↓↓↓================="); int money = 10_0000_0000; int year = 20; int total = money * year; System.out.println(total); // 内存溢出 System.out.println((long)total); // 强转为long依旧不行,说明溢出在int 给total之前就已经发生了 long total1=money * (long)year; System.out.println(total1);