Java 运算符中的隐式转换
Java 有以下几种运算符:
- 算数运算符
- 逻辑运算符
- 位运算符
- 关系运算符
- 赋值运算符
- 其他运算符
算数运算符
算数运算符有 + - * / % ++ --
+-*/%运算符,会自动把位长小于 int 的数据转化成 int 类型,当数据是 int、long 类型,会按照原有类型继续计算。例如下面的例子就会报类型不匹配错误
byte x = 1;
byte y = 1;
byte z = x + y;
++--运算符,操作数不会进行隐式转化。例如下面的例子就不会报错
byte x = 1;
x += 1;
逻辑运算符
逻辑运算符有 && || !
逻辑运算符只会有 boolen 类型数据参与,没有数据类型转换
位运算符
位运算符有 & | ^ ~ << >> >>>
位运算符会自动把位长小于 int 的数据转化成 int 类型,对于 int、long 类型,会按照原有类型继续计算。例如下面的例子就会报类型不匹配错误
byte x = 1;
byte y = 1;
byte z = x >> 1;
关系运算符
逻辑运算符有 == != > < >= <=
关系运算符没有类型转换
赋值运算符
赋值运算符有 = += -= *= /= %= <<= >>= &= |= ^=
赋值运算符没有类型转换
其他运算符
其他运算符有 ?: instanceof
其他运算符没有类型转换
总结
+ - * / %
& | ^ ~ << >> >>>
这些运算符在运算时,位长小于 int 的数据会隐式转换成 int,得出的结果也是 int 类型