java基本数据类型转换
Java中一共有8种基本数据类型,分别为 byte,short,char,int,float,long,double,boolean
其中boolean不能转化为任何数据类型。
整型,字符型,浮点型可以相互转换,遵循以下规则:
1. 容量小的类型自动转化为容量大的类型,数据类型按容量大小排序为:
byte、short、char àint à longà floatàdouble
2. byte、short、char不可以相互转换,它们3者在运算时首先转化为int类型。
3. 容量大的数据类型转化为容量小的数据类型时,需要进行强制转换,但可能造成精度降低或者溢出,需要慎重。
4. 有多种数据类型进行运算时,系统首先自动将所有数据转化为容量最大的类型,然后再进行运算。
5. 实数常量默认为double(如:5.6)
6. 整数常量默认为int(如:123)
说了这么多规则,读者可以思考一下以下代码有没有问题:
byte b1=1;
byte b2=2;
byte b3=b1+b2;
byte b4=129;
看到这里可能很大一部分读者并不会认为这段代码有问题,但是到eclipse去敲一下它你会发现3、4行会编译报错,这里请注意上面第二条规则,byte在运算时是先变成int之后再进行运算的,而int的容量比byte的容量大,所以这里要进行强制转换,第三行代码改为:
byte b3=(int)(b1+b2);
同理char和short也是一样的
至于第四行java中byte的取值范围为-128~127,将129改为这中间的数就好了。
再来看一个经典的例子:
long l=8888888888;
这里也会编译报错,很多读者会有疑问为什么会编译报错?8888888888并没有超出long的范围啊,其实这里需要注意的是8888888888是一个int类型的数据,而此时int已经装不下这个数了,所以不会自动转化成long,此时只需要在8888888888后面加一个字母l就可以了,代表它是long类型的。
还有一个很常见的错误:
float f=1.23;
这里相信大多数都知道,1.23为double类型的,需要强制转换或者在后面加个f。
最后还要提醒一下各位读者,当java中涉及到float类型的运算时一定要注意是否要强转,例如:
float f1=1.2f;
float f2=123;
float f3=f1+f2*0.3;
这里由于0.3是double类型的,需要进行强制转换,要注意这些细节。
以上是博主关于基本类型转换的一些看法,欢迎指正。