Java中boolean与int类型互转方法及C++同类算法改写方案
Java int与boolean转换及对应算法实现
1. int与boolean的转换规则
Java属于强类型编程语言,boolean和int是完全独立的两种基本数据类型,不支持两者的隐式自动转换,也不允许强制类型转换。
如果需要手动实现两种类型的转换,可以按以下规则编写:
- int转boolean:遵循C++中非0为true、0为false的逻辑,写法为
boolean boolValue = intValue != 0; - boolean转int:遵循true对应1、false对应0的逻辑,写法为
int intValue = boolValue ? 1 : 0;
2. 唯一置位位位置问题的Java实现
你提供的C++代码逻辑为:先校验输入N是否为0,或者存在多个二进制置位位,满足任意一种情况直接返回-1;否则计算唯一置位位的位置返回。
对应逻辑的Java实现如下,注意条件判断需要显式返回boolean结果,不能直接把整数作为判断条件:
class Solution { public int findPosition(int N) { if ((N & (N - 1)) != 0 || N == 0) { return -1; } return (int) (Math.log(N) / Math.log(2)) + 1; } }
如果想要避免浮点数运算可能带来的精度误差,也可以使用Java内置的位工具方法实现更高性能的版本:
class Solution { public int findPosition(int N) { if (N == 0 || Integer.bitCount(N) != 1) { return -1; } return Integer.numberOfTrailingZeros(N) + 1; } }
内容的提问来源于stack exchange,提问作者pikachu07
相关产品推荐
相关产品推荐

