本帖最后由 扬帆起航fonnson 于 2016-7-1 13:30 编辑
我对byte short char int等基本数据类型之间的转换一直没有清晰的概念,今天百度发现了一个好帖子,搬运过来与大家分享。
先说一个比较特殊的boolean类型,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。
![]()
虚线箭头意为如果此int型数值尚在char、byte范围内,jvm会自定进行一次隐式类型转换,将此int型数值转换成char、byte类型。
char型其本身是unsigned型,同时具有两个字节,其数值范围是0 ~ 2^16-1,因为,这直接导致byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为负数的问题),同时,byte当然可以直接提升到short型。 byte p = 3; // 编译正确:int到byte编译过程中发生隐式类型转换 int a = 3; byte b = a; // 编译出错:cannot convert from int to byte byte c = (byte) a; // 编译正确3是直接量,编译期间可以直接进行判定,后者a为一变量,需要到运行期间才能确定,也就是说,编译期间为以防万一,当然不可能编译通过了。此时,需要进行强制类型转换。摘了一些我的疑问,原帖有详细讲解带例子,地址:http://www.cnblogs.com/lwbqqyumidi/archive/2014/04/29/3700164.html
|
|