数据类型 续集
public class demo01{
public static void main(String[] args){
char a ='a' //
System.out.println((int)a) //强制转换类型
}
}
类型的层级
byte-short-char-int-long-float-double
- byte
- short
- char(虽然是字符,但也是可以当数字来进行运算的)
- int
- long
- float(小数优先级大于整数)
- double
不同类型的数据先转为同一类型才可以进行运算。
转换的类型
强制转换:高级向低级转换,就是自动转换
自动类型转换:低级向高级转换,就是强制转换
注意点:布尔类型不可以转换
转换方法
public class demo01{
public static void main(String[] args){
//方式1
int a1 = 10;
double a2 =3.14;
System.out.println((double)a1);//输出10.0
System.out.println((int)a2);//强制转换 输出3
//方式2
a1 =(double)a1 //自动转换
a2 =(int)a2 //强制转换
System.out.println(a1);//得出 10.0
System.out.println(a2);//通过四舍五入 得出3
}
}
注意事项
public class demo01{
public static void main(String[] args){
//注意,强制转换的时候注意不要内存溢出
int a1 = 128;
float a2 =3.14;
int a1 =(byte)a1 //强制转换为byte,但byte最大只是127.内存溢出会数据出错虽然输出-128
float a2 =(int)a2 //浮点数自动转换为整数
System.out.println(a1);//内存溢出,得出 -128
System.out.println(a2);//去小数点后数 得出3
//布尔类型不能转换
//不能把对象类型转换为不相干的类型
System.out.println((int)121);//低容量转高容量,自动转换,输出为121.0
System.out.println((int)121.1);//高容量转到低容量的时候,强制转换,输出121.(出现精度问题)
System.out.println((char)98);//98是数字int类型,要变成比他低级字符,需要括号强转
}
}
注意点:
- 不能对布尔类型进行转换。
- 不能把对象类型转换为不相干的类型
- 高容量转到低容量的时候,强制转换
- 转换的时候可能内存溢出,或者精度问题
额外点
jdk7新特性,操作比较大的数据时可以用下划线分割
public class demo01{
public static void main(String[] args){
int monney =10_0000_0000 //表示1000000000,特性可以加_
int year =20
long all = monney*((long)year) //如果内存溢出,必须在运算前把问题解决了
/*
一般运算的时候,会把数值自动转换为高容量的类型,所以做乘法,低容量会自动转换为高容量的类型进行运算。
必须在运算的时候,把结果的类型问题解决了
long 后缀L跟l都可以用的,建议用L代替,免得看成了1
*/
}
}