看这个例子:
byte b=2;//2为整形常量,在赋值给byte b时会检测2是否在-128~127范围内
byte b1=2,b2=3,b3;
b3=b1+b2;//b1,b2为变量,b1+b2的值为int型,可能会超出byte范围,因此不能赋值给b3
不知道理解有没有欠缺~~
由此我找了下 基本数据的转换规则
(1)当运算符为取正运算符(+)。取负运算符(-)或按位取反运算符(~)时,如果操作数为byte、char或short,则先被转换为int,再参与运算。
(2)当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char,则不用先被转换为int,而是直接参与算术运算,且运算结果类型也不变。
(3)如果操作数为int或long,则无论运算符为何种单操作数运算符,均不发生类型转换,且运算结果类型也不变。
双操作数运算符算术运算时基本转换规则如下:
(1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
(2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
(3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
(4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
(5)如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
( 6 ) 在赋值语句中,默认类型为整型的无小数点整数型文字值作为右操作数时,可以赋值给取值范围比整型小的变量,前提是文字值对于的实际数值在变量类型的取值范围内。而默认类 型为双精度的带有小数点的浮点数型文字值只能赋值给双精度型变量,不能赋值给单精度型变量。
麻烦浪费下时间,看看以上规则有没有错误或遗漏~~如果没有我想按照上述规则记忆.
|