洛阳北大青鸟:Java编程中的强制类型转换
java中8种数据类型的取值范围
Boolean 布尔型 只有两个值true、false
Char 字符型
Byte 8位带符号整数-128到127之间的任意整数
Short 16位无符号整数-32768~32767之间的任意整数
Int 32位带符号整数-2^31到2^31-1之间的任意整数
Long 64位带符号整数-2^63到2^63-1之间的任意整数
Float 32位单精度浮点数 根据IEEE754-1985标准
Double 64位双精度浮点数 根据IEEE754-1985标准
一.Java 的自动转换
如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换(automatic type conversion):
1.这2种类型是兼容的。
2.目的类型数的范围比来源类型的大。
当以上2个条件都满足时,拓宽转换(widening conversion )发生。例如,int 型的范围比所有byte 型的合法范围大,因此不要求显式强制类型转换语句。对于拓宽转换,数字类型,包括整数(integer )和浮点(floating-point )类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean )是不兼容的。字符类型(char )和布尔类型(bollean )也是互相不兼容的。
二. 不兼容类型的强制转换
其中,目标类型(target-type )指定了要将指定值转换成的类型。例如,下面的程序段将int 型强制转换成byte 型。如果整数的值超出了byte 型的取值范围,它的值将会因为对byte 型值域取模(整数除以byte 得到的余数)而减少。
Java代码:
1.int a;
2.byte b;
3.// ...
4.b = (byte) a;