如何在Kotlin中使用Java的按位与、按位或运算符?
在Kotlin中使用位运算的正确姿势
嘿,你提到的问题其实是Kotlin和Java在语法设计上的小差异——Kotlin并没有移除位运算功能,只是把Java里的符号式位运算符换成了中缀函数的形式来调用,下面给你详细说明:
运算符对应关系表
Kotlin为Int、Long等数值类型内置了专用的位运算中缀函数,和Java的运算符完全对应:
- Java的
|(按位或)→ Kotlin的or - Java的
&(按位与)→ Kotlin的and - Java的
^(按位异或)→ Kotlin的xor - Java的
>>(有符号右移)→ Kotlin的shr - Java的
<<(左移)→ Kotlin的shl - Java的
>>>(无符号右移)→ Kotlin的ushr
示例代码转换
你给出的Java代码:
int a = 5 | 10; int b = 5 & 10;
转换成Kotlin的写法就是:
val a = 5 or 10 // 等价于Java的5 | 10,计算结果为15 val b = 5 and 10 // 等价于Java的5 & 10,计算结果为0
为什么这么设计?
Kotlin这么做是为了避免符号运算符的歧义——比如&在Java里同时承担按位与和逻辑与(非短路)的职责,而Kotlin把逻辑与明确为&&,按位与用and中缀函数,语法上更清晰,也减少了出错的可能。
如果你实在习惯符号写法,也可以自己给数值类型扩展运算符,但官方推荐的标准写法还是使用内置的中缀函数,可读性和兼容性更好。
内容的提问来源于stack exchange,提问作者Water Magical
相关产品推荐
相关产品推荐

