最近在修改公司之前的项目,在项目中遇到了权限校验的问题,代码中出现了BigInteger的setBit()testBit()方法,之前未接触过,所以了解了下BigInteger. 在Java中,由CPU原生提供的整型最大范围是64位long型整数.使用long型整数可以直接通过CPU指令进行计算,速度非常快. 如果我们使用的整数范围超过了long型怎么办?这个时候,就只能用软件来模拟一个大整数.java.math.BigInteger就是用来表示任意大小的整数.BigInteger内部用一个in…
JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Long num) { String str = null; Long[] tt = new Long[4]; tt[0] = (num >>> 24) >>> 0; tt[1] = ((num << 8) >>> 24) >>>…
JAVA的整型与字符串相互转换1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或         i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 Str…
先看下这段神奇的Java代码: public static void main(String[] args) throws Exception { doSomethingMagic(); System.out.printf("2 + 2 = %d", 2 + 2); } 执行结果:2 + 2 = 5 那么doSomethingMagic到底做了什么神奇的事情呢?先看代码: private static void doSomethingMagic() throws Exception {…
在阅读<阿里巴巴Java开发手册>时,发现有一条关于整型包装类对象之间值比较的规约,具体内容如下: 这条建议非常值得大家关注, 而且该问题在 Java 面试中十分常见. 还需要思考以下几个问题: 如果不看<阿里巴巴Java开发手册>,如何知道 Integer var = ? 会缓存 -128 到 127 之间的赋值? 为什么会缓存这个范围的赋值? 如何学习和分析类似的问题? Integer 缓存问题分析 先看下面的示例代码,并思考该段代码的输出结果: public class In…
1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A. 有叁种方法: 1.) Str…
我们在学习Java的包装类Integer.Long的时候可能会遇到这个问题: ①Integer a = 500;// Integer a = Integer.valueOf(500); 等价于上面的 Integer b = 500; System.out.println(a == b); // false② Integer c = 100; Integer d = 100; System.out.println(c == d); // true ① 这种情况其实很好理解,因为 Integer是个…
byte,1个字节8位, -128 ~ 127之间,首位表示正负,0为正,1为负,0111,1111表示127,-127为127取反1000,0000,再加1,即1000,0001为-127,-127减1得-128,所以1000,0000表示-128,对它减1取反得到它自身. short,2个字节,-1 * 2的15次方 ~ 2的15次方减1之间,参考byte的表示法. int,4个字节,-1 * 2的31次方 ~ 2的31次方减1之间. long,8个字节,-1 * 2的63次方 ~ 2的63…
怎么区分是什么进制? 二进制:0b开头,eg: int i = 0b10; 八进制:0开头,eg: int k = 010; 十进制: 十六进制:0x开头,eg: int j = 0x10; 浮点数类型在比较时的问题 尽量避免浮点数之间直接进行 == 比较 尽量避免浮点数之间直接进行 == 比较 尽量避免浮点数之间直接进行 == 比较 如果必须要比较浮点数,又不能有误差,如银行业务,可以用BigDecimal类型进行比较. float f = 123456F; 这样的到f是1.23456 dou…
1,首先描述一下应用场景 比如,我们要对菜单做权限,控制不同角色菜单显示与不显示,角色为经理时,我们需要菜单id为 4,7,13,24的菜单显示,别的菜单不显示. 就是说,这时候我们要把4,7,13,24这四个菜单的状态设为1,其他菜单不显示,即状态为0 我们想要把把这四个状态为1的菜单组合信息封存到一个String类型的字段里,怎么办呢,这就要用到我们的神器BigInteger BigInteger bigInteger=new BigInteger("0"); BigInteger…