前言:
因在项目中使用到了权限校验的问题,代码中出现了BigInteger的setBit()和testBit()方法,之前未接触过,度娘后也没有找到详细的介绍,基本都是在复制粘贴官方API文档的描述。
故,分享一下,也是为防止遗忘。
一、setBit()方法的使用:
setBit(int n) ==》BigInteger java.math.BigInteger.setBit(int n)
可以看出,此方法接收的是一个“int类型的n”,该n为指数,即得出的结果为2的n次幂
多次使用此方法,会累加BigInteger 类型 变量 中的数。
如下:
BigInteger big = new BigInteger("0"); //0可以是任意数
big= big.setBit(2); //2的2次幂
big= big.setBit(4); //2的4次幂
big= big.setBit(7); //2的7次幂
System.out.println(big); //输出==》2的2次幂+2的4次幂+2的7次幂=148
二、testBit()方法的使用:
testBit(int n) ==》boolean java.math.BigInteger.testBit(int n)
可以看出,此方法接收的是一个“int类型的n”,该n为指数,即得出的结果为2的n次幂(与上方一致)
但,此方法“返回boolean 类型”,作用为,【判断BigInteger 类型 变量中的数是否有testBit()参数中的n次幂,即是否有2的n次幂】
有,则返回true,无,则返回false
如下:
BigInteger big= new BigInteger("148"); //这次我们直接给个148
boolean bigBool_1 = big.testBit(2); //判断148中是否存在2的2次幂
boolean bigBool_2 = big.testBit(4); //判断148中是否存在2的4次幂
boolean bigBool_3 = big.testBit(7); //判断148中是否存在2的7次幂
System.out.println(bigBool_1); //true
System.out.println(bigBool_2); //true
System.out.println(bigBool_3); //true
三、上一个完整的案例:
package testTest;
import java.math.BigInteger;
public class test {
public static void main(String[] args) {
BigInteger num = new BigInteger("0"); //这次我们给的是0
num = num.setBit(2);
num = num.setBit(4);
num = num.setBit(7);
System.out.println(num); //输出==》2的2次幂+2的4次幂+2的7次幂=148
boolean numBool_1 = num.testBit(2); //判断148中是否存在2的2次幂
boolean numBool_2 = num.testBit(4); //同上
boolean numBool_3 = num.testBit(7); //同上
System.out.println(numBool_1); //true
System.out.println(numBool_2); //true
System.out.println(numBool_3); //true
}
}
四、完结