public class 类型转换 {
public static void main(String[] args) {
//低------------------------------高
//byte, short, char< int < long< float< double
//强制类型转换 高--->低
//由于JAVA是强类型语言,所以进行有些运算时,需要用到类型转换
//强制转换方法:在所要转换变量前加上(目的类型)变量名 ,即可进行强制转换。
int i = 128;
byte b = (byte) i;
System.out.println(i);//结果 128
System.out.println(b);//结果-128 内存溢出的缘故,byte范围:-127~127,转换时要尽量避免溢出
//自动类型转化 低--->高
int i1 = 128;
double b1 = i1;
System.out.println(i1);
System.out.println(b1);
/*
注意点:
1. 不能对bool值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候,会进行强制转换。
4. 转换的时候可能会存在内存溢出,或者精度问题。
*/
System.out.println("========================");
System.out.println((int)23.7);//结果23
System.out.println((int)45.89f);//结果45
System.out.println("========================");
char c = 'a';
int c2 = c+1;
System.out.println(c2);
System.out.println((char)c2);
System.out.println("========================");
//操作数比较大的时候,注意溢出问题
int money = 10_0000_0000;//JDK7新特性, 数字可以用下划线隔开,方便计数
System.out.println(money);
int year = 20;
int total = year*money;
System.out.println(total);//结果为-1474836480 原因:计算时溢出
long total2 = year*money;
System.out.println(total2);//结果为-1474836480 原因:计算时溢出,并且year*money是int类型
//在进行long转化时,已经将结果计算出来了。
long total3 = (long)money*(long)year;//也可以long total3 = money*((long)year);
System.out.println(total3);//结果20000000000
}
结果
128
-128
128
128.0
========================
23
45
========================
98
b
========================
1000000000
-1474836480
-1474836480
20000000000