类型转换
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i;//在强制转换时要在变量前(i)加上()中间写类型 这里是byte 。强制转换是有高转到低的时候用的:高--低
//内存溢出:byte最大值只有127这里确实128 所以在转换的时候尽量避免内存溢出的情况
//自动转换:低--高
System.out.println(i);
System.out.println(b);
/*
1.不能对布尔值进行转换
2.不能把对象类型转换成不相干的类型,
3.再把高容量转换成低容量的时候剖:用强制转换 从低容量到高容量会自动转换
4.转换的时候可能存在内存溢出,或精度问题!(精度问题会在小数中遇到)
5.低--------------------------------------------高
byte,short,char->int->long->float->double
下面是例子
*/
System.out.println("==========================================");//小数精度例子
System.out.println((int)23.7);//输出23
System.out.println((int) -45.89f);//输出-45
System.out.println("=================================================");
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char) d);
}
}
public class Demo05 {
public static void main(String[] args) {
//操作比较大的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割 不会被输出
int money = 10_0000_0000;
int years = 20;
int total =money*years;//-1474836480 计算式溢出了
long total2 =money*years;//默认是int,转换之前已经有问题了所以这个方法是错误的
//正确操作
long total23 = ((long)money)*years ;//要先把一个数据转换成long
long total24 = money*((long)years);//这两个输出一样的
System.out.println(total23);
System.out.println(total24);
}
}