1) Boolean(布尔)类型是不可以转换为其他类型的,强制类型转换也不行,例如:
boolean b1=1;
int a=(int)b1;
是错误的;
2) char,short,byte三种类型在进行运算时都会先转换成int类型再进行运算,所以它们的运算结果都会是int类型,例如:
byte b1=1,b2=2;
byte b3=b1+b2;
就是错误的,因为两个byte类型b1+b2进行运算,会先将其转换为int型再进行运算,运算结果就是int型,而int型赋值给byte类型就需要进行强制类型转换,此时就会碰到另一个问题:
int类型在内存中占用4个字节,而byte类型1个字节,所以int强制转换为byte类型也不是不可以,就是直接把int类型内存中的前3个字节直接去掉,这样的话,如果int中如果前3个字节有数据就会丢失。
3)其他类型进行运算时按照如下顺序进行自动转换:
char->int->long->float->double
4)强制类型转换中,int类型转换为byte类型时,直接把内存中多余的3个字节去掉就可以了,但是double类型强制类型转换为float类型时就会有错误,因为double类型在内存中存放方式与int类型不太相同,不能直接进行字节的删减,具体存放方式我还不太清楚。。。
5)除了四类八种(byte,short,int,long,float,double,boolean,char)数据类型,其他的都为引用类型,例如字符串类型String就是引用类型。