类型转换
转换顺序
java强类型语言,所以在由做一些运算的时候我们需要用到类型转换
由低到高:
byte,short,char——》int——》long——》float——》double
低————————————————————————》高
注意:
在不同的类型里面必须要转换为同一个类型才可以进行运算,不能够把类型转换为不相干的类型
强制类型转换
当类型由高转换为低的时候,会出现内容溢出或者精度的情况,但从低到高的时候就不会出现这样的问题
如下面代码:
public class demo2 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//类型转换从高转换为低的时候,会出现代码溢出
System.out.println(i);
System.out.println(b);//打印出来的数据是-128
}
}
图片溢出
自动类型转换
如果在顺序转换的时候是从小转到大就不会出现强制转换负数的问题也不会报错
public class demo2 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//强制转换,代码出现溢出情况,所以会出现负数
double c=i;//自动类型转换,代码从低专为高不会出现溢出的情况只会根据他的类型转化为想要的代码
System.out.println(i);
System.out.println(b);
System.out.println(c);//正常的从低转为高不会出现溢出的情况
}
}
不会溢出的情况
char,double,int,float相互转换
public class demo2 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//代码出现溢出情况,所以会出现负数
double c=i;//代码从低专为高不会出现溢出的情况只会根据他的类型转化为想要的代码
System.out.println(i);
System.out.println(b);
System.out.println(c);//正常的从低转为高不会出现溢出的情况
System.out.println("==================================");
System.out.println((int)23.6);//double类型转换为int强制转换
System.out.println((int)24.5f);//float浮点数强转int
System.out.println((int)-24.5f);
System.out.println("==========================");
char d='b';//char是字符串,所以我们每一个字母都会有对应的数字是可以和int相互转换的
int e=d+1;//这咯的e的值是高转低,所以不用强制的转换,我们是可以查看到这个b这个字母对应的数字+1d的数字的
System.out.println(e);//这里就是字母b+1=c对应的数字
System.out.println((char) e);//这个是可以将数字转为对应的字母也就是C
}
}
输出的结果
数字过大溢出
public class demo3 {
public static void main(String[] args) {
//操作数据比较大的时候会出现的溢出的问题
//JDK7新特性,数字之间可以用下划线来分割
int money=10_0000_0000;
int years=20;
int total=money*years;
long total2=money*years;//y因为数字过大,所以需要转化,long,不然会出现数字溢出的问题
long total3=money*((long)years);//long是最高的类型,所以可以直接转为long在进行输出就不会出现溢出的问题
System.out.println(money);
System.out.println(total2);
System.out.println(total3);
}
}
输出结果
谢谢遇见狂绅说:学习资料网址https://www.kuangstudy.com/course