类型转换
-
由于java是强类型语言,有些运算需要用到类型转换
类型的低到高
byte,short,char→int→long→float→double
-
运算中,不同类型的数据先转换为同一类型,然后进行运算
-
强制类型转换:低转高;
-
自动类型转换: 高到底;
public class Demo05 {
public static void main(String[] args) {
int i=128;
byte b =(byte)i;//强制转换(byte)。内存溢出,输出的不是128
//强制转换 格式:(类型)变量名; 高到低,高数据强制转换成低数据
//自动转换 低到高,低数据到高数据
System.out.println(i);
System.out.println(b);
System.out.println("=================================");
int i1=128;
double b1 =i1;
System.out.println(i1);
System.out.println(b1);
/*
类型转换注意点:
1.不能对布尔值进行转换
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 d=c+1;
System.out.println(d);
System.out.println((char)d);
}
}
操作比较大的数,注意内存溢出
public class Demo06 {
public static void main(String[] args) {
//操纵比较大的数时,注意输出问题
int money=10_0000_0000;//数字之间可以用下划线分割
int year=20;
int total=money*year;
System.out.println(total);//输出 -1474836480,数值不对
long money2=10_0000_0000;
long year2=20;
long total2=money2*year2;
System.out.println(total2);
int money3=10_0000_0000;//数字之间可以用下划线分割
int year3=20;
long total3=money*year;//输出 -1474836480,,数值不对,虽然long的范围大,但是在使用之前就出问题了,之前定义的是int,数值范围低,计算的时候是用int数值计算的,输出的时候也是按int输出的
//可以先提前强制转换成高内存的值再去使用,格式如下
int money4=10_0000_0000;//数字之间可以用下划线分割
int year4=20;
long total4=money4*((long)year4);//强制转换的格式,注意。
System.out.println(total4);//强制转换后,输出的数值是正确的。提前转换
System.out.println("=================================");
int a=10000;
float b=1.2f;
double c=2.1;
System.out.println(a);
}
}