本帖最后由 Mr_Free 于 2013-7-30 15:38 编辑
分析:数据类型转换:分为自动类型转换和强制类型转换自动类型转换就是,jvm内部自动将数据类型进行转换,它是让Java编译器自动进行转型操作。强制转型不用什么条件,只要我们在前面加上()就可以了。比如
*数据类型的转换优先级是:double>float>long>int>byte,short,char
*赋值运算分为2种:
*1,等号右边全是由常量和运算符组成的表达式:因为都是常量,所以虚拟机在编译期就能知道表达式的结果,
*并判断结果是否在被赋值的变量的类型范围内,如果在则直接赋值,如果不在则需要强制转换。
*2,等号右边有变量参与运算:如果参与运算的变量是byte、short、char,它们会先转变为int类型,再参与运算,类型总是会提升。
byte b = 1 + 1;//1+1=2,你这里是优先级高的int类型转换为优先级低的byte类型,因为等号右边是都是常量,所以虚拟机在编译期就能知道要表达式的结果,判断结果是否在被赋值的变量类型范围内,2是在8位二进制也就是-128到127范围内的,如果超出范围,就会报异常了。你需要在等号右边加上(byte)。
|