持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
首先我带大家再回顾一下
java中的数据类型分为基本数据类型和引用数据类型。四类基本数据类型分别为整数类型,浮点类型,字符类型,boolean类型。基本数据类型有八种byte short int long float double char boolean。
自动类型转换
有的时候我们可能都不会注意到还有自动类型转换这个功能。但它也的确是java中一个很重要的功能。当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。
//思考一下,下面的代码对吗?
int a = 'a';
代码正确
相信大家看到着段代码的第一反应该是很懵。会想,这怎么把一个字符赋值给int了,代码一定是错了。其实不然,代码没有错,是自动类型转换起的作用。char类型的精度小于int,把'a'赋值给int时,系统会把'a'先自动转换成97,然后赋值给int。
//思考一下,下面的代码对吗?
byte a = 1;
char b = a;
代码错误
看到代码后,有些小伙伴肯定高兴的想,这不和上面一样嘛,自动类型转换我懂。但是代码错了,看到这段代码时我们要知道一个原则(byte,short)和char之间不会相互自动转换。同时也要知道boolean不参与转换,我为大家做了一张自动类型转换图,大家自行参考一下。
//思考一下,下面的代码对吗?
byte a = 1;
short b = 1;
short c = a + b;
byte e = 1;
byte f =e + a;
代码错误
这里也是有坑的,估计有不少小伙伴不小心就掉进去了。看这段代码时我们要知道byte,short,char他们三者在计算时结果首先转换为int类型,无论是它们三个混合运算还是单独的一种类型运算,只要运算了,就要把结果转化为int类型。当然我们以后遇到的不只是它们之间的运算,还有很多比如int double等等,它们之间的运算就是把结果的类型自动提升为操作数中最大的类型。
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,大家再使用的时候要格外要注意。
int i = (int)1.9;
System.out.println(i);//1
那数据类型我就说到这里了。我们下一篇文章见!