Java基本数据类型转换

来源:互联网 发布:淘宝店铺客服 编辑:程序博客网 时间:2024/04/29 23:49

Java基本数据类型转换

1 boolean类型不可以转换成其他的数据类型,其他类型也不能转换为boolean类型。

2 整形,字符型, 浮点型的数据在混合运算中可以互相转换。

* 容量小的类型自动转换成容量大的数据类型。数据类型按容量大小排序为:

# byte, short, char->int->long->float->double

# byte, short, char 之间不会互相转换,他们三者在计算时首先转换成int类型

* 容量大的数据类型转换成容量小的数据类型时,需要加上强制转换符,但可能造成精度降低或溢 
出,使用时要格外注意。

* 有多种类型的数据混合运算时,系统首先自动的转换成容量最大的那一种数据类型,然后再进行计算

* 实数常量(如: 1.2)默认为double

* 整数常量 (如:123)默认为int

典型例子分析:

(1) byte b1 = 1;

byte b2 = 2;

byte b3 = (byte) (b1 + b2);

分析:看到一个整数,如无指明,则系统默认为int型。一个int型的数可以直接赋值给byte,short, 
char但不能超过他的范围(如:byte表示范围为:-128-127,所以我们不能把129赋给一个byte)如:

long l = 30000000000l;//此处必须加l。不加则显示错误信息:过大的整数。

(2) 整数的溢出与实数的溢出存在不同之处:

如:byte b1 = 67;

byte b2 = 89;

byte b3 = (byte)( b1 + b2);

分析:很明显b3溢出了,不过打印出来的结果会显示-100,这是因为整数的溢出是直接取其低字节,而把高字节去掉。但是:

double d = 1e200;

float f = (float)d;

则打印出来的结果显示为:Infinity。只是因为浮点数在计算机内部表示时还要考虑到小数点,所以如果直接把高字节的去掉是不行的。

(3)可以把float强制转换成long类型,舍去小数部分,而不是简单的四舍五入。

注:float f = 0.1;

看到一个浮点数,如无指明,则系统默认为double型,因此要变成float型,需要指明或作强制转换:

正解:float f = 0.1f; 或者:float f = (float) 0.1;

(4) 错例:float f = 0.1 + 123 * 0.1;

分析:由于有多种类型的数据混合运算时,系统首先自动的转换成容量最大的那一种数据类型,然后再进行计算。此处结果为double型,如需强制转换成float型:

float f = (float)( 0.1 + 123 * 0.1);


0 0
原创粉丝点击