从今天开始,我尽量每天分析一个源 Java 文件,以梳理重要的类都具有哪些功能。
常量
-
MIN_VALUE- 获得整型的最小值 -
MAX_VALUE- 获得整型的最大值 -
TYPE- 获得整型的类型值其实就是 "int"
-
SIZE- 本类型的值在二进制形式占据多少比特 -
BYTES- 本类型的值在二进制形式占据多少字节
静态方法
-
Integer.toString(int i, int radix)- 把整数 i 转换为 radix 进制(最小是 2,最大是 36)值的字符串转换的结果是小写字符,如果需要大写字符,可以参考以下示例
String str = Integer.toString(254, 16).toUpperCase(); -
Integer.toUnsignedString(int i, int radix)- 把无符号整数 i 转换为 radix 进制(最小是 2,最大是 36)值的字符串这里的操作,取巧使用 Long 代替了 Integer,从而实现了 i 的无符号化。
-
Integer.toHexString(int i)- 把整数 i 转换为 16 进制值的字符串 -
Integer.toOctalString(int i)- 把整数 i 转换为 8 进制值的字符串 -
Integer.toBinaryString(int i)- 把整数 i 转换为 2 进制值的字符串 -
Integer.toString(int i)- 把整数 i 转换为 10 进制值的字符串 -
Integer.toUnsignedString(int i)- 把无符号整数 i 转换为 10 进制值的字符串这里的操作,取巧使用 Long 代替了 Integer,从而实现了 i 的无符号化。
-
Integer.parseInt(String s, int radix)- 数字字符串 s 根据 radix 进制(最小是 2,最大是 36)转换为整数值/** * 合法的解析 */ Integer.parseInt("0", 10); // 返回 0 Integer.parseInt("473", 10); // 返回 473 Integer.parseInt("+42", 10); // 返回 42 Integer.parseInt("-0", 10); // 返回 0 Integer.parseInt("-FF", 16); // 返回 -255 Integer.parseInt("1100110", 2); // 返回 102 /** * 非法的解析,最终抛出 NumberFormatException 异常 */ Integer.parseInt("99", 8); Integer.parseInt("Kona", 10); -
Integer.parseInt(String s)- 数字字符串 s 根据 10 进制转换为整数值 -
Integer.parseUnsignedInt(String s, int radix)- 无符号数字字符串 s 根据 radix 进制(最小是 2,最大是 36)转换为整数值因为要求无符号,所以如果 s 首字母为 "-" 字符的话,会抛出 NumberFormatException 异常。
另外,s 所表示的具体数字,也不能大于 2^32 - 1,否则也会抛出 NumberFormatException 异常。
-
Integer.parseUnsignedInt(String s)- 无符号数字字符串 s 根据 10 进制转换为整数值 -
Integer.valueOf(String s, int radix)- 数字字符串 s 根据 radix 进制(最小是 2,最大是 36)转换为整数值,并返回该整数值的包装(Integer)对象 -
Integer.valueOf(String s)- 数字字符串 s 根据 10 进制转换为整数值,并返回该整数值的包装(Integer)对象 -
Integer.valueOf(int i)- 整数 i 转换为包装(Integer)对象如果 i 的范围在 -128 到 127 (包含)之间,则直接返回缓存池中的对象,否则返回新的对象。
-
Integer.hashCode(int value)- 返回整数 value 的哈希码,其实就是 value 本身 -
Integer.getInteger(String nm)- 根据给定的字符串 nm,返回一个包装(Integer)对象,如果 nm 解析的结果为 null,则返回 null -
Integer.getInteger(String nm, int val)- 根据给定的字符串 nm,返回一个包装(Integer)对象,如果 nm 解析的结果为 null,则返回 val 的包装(Integer)对象 -
Integer.getInteger(String nm, Integer val)- 根据给定的字符串 nm,返回一个包装(Integer)对象,如果 nm 解析的结果为 null,则返回 val -
Integer.decode(String nm)- 解码 nm 数字字符串为整数值,并返回该整数值的包装(Integer)对象nm 的格式可以是:
- "-139" 十进制
- "0x3ff" 十六进制
- "-0X3ff" 十六进制
- "#3ff" 十六进制
- "076" 八进制
- "+076" 八进制
如果 nm 为 null 或空字符串,则抛出 NumberFormatException 异常。
-
Integer.compare(int x, int y)- 比较两个整数值,如果 x 小于 y 返回 -1,如果 x 等于 y 返回 0,如果 x 大于 y 返回 1 -
Integer.compareUnsigned(int x, int y)- 比较两个无符号整数值,如果 x 小于 y 返回 -1,如果 x 等于 y 返回 0,如果 x 大于 y 返回 1这里,x 和 y 的无符号化,取巧使用 long 代替了 int,从而实现了 x 和 y 的无符号化。具体操作是调用 compare(long x, long y) 方法,代码为 compare(x + Integer.MIN_VALUE, y + Integer.MIN_VALUE)
-
Integer.toUnsignedLong(int x)- 把无符号整数 x 转换为 long 的无符号值,并返回该 long 值 -
Integer.divideUnsigned(int dividend, int divisor)- 无符号整数 x 除以无符号整数 y 的商 (int) -
Integer.remainderUnsigned(int dividend, int divisor)- 无符号整数 x 除以无符号整数 y 的余数 (int) -
Integer.highestOneBit(int i)- 整数 i 中最左侧比特的 1 保留,其余位置置 0,然后返回该值 (int) -
Integer.lowestOneBit(int i)- 整数 i 中最右侧比特的 1 保留,其余位置置 0,然后返回该值 (int) -
Integer.numberOfLeadingZeros(int i)- 返回整数 i 中最左侧的(前导) 0 的个数,例如 i 为 0 则返回 32 -
Integer.numberOfTrailingZeros(int i)- 返回整数 i 中最右侧的(尾随) 0 的个数,例如 i 为 0 则返回 32 -
Integer.bitCount(int i)- 返回整数 i 中 1 的个数 -
Integer.rotateLeft(int i, int distance)- 返回整数 i 循环左移 distance 位后的值 -
Integer.rotateRight(int i, int distance)- 返回整数 i 循环右移 distance 位后的值 -
Integer.reverse(int i)- 返回整数 i 比特翻转后的值具体的操作是最高位与最低位交换,次高位与次低位交换,以此类推,直到全部的比特都实现交换。
例如 0x12345678 翻转后得到 0x1e6a2c48 。
-
Integer.signum(int i)- 返回整数 i 的符号值,如果 i 为 0 则返回 0,如果 i 为正数则返回 1,如果 i 为负数则返回 -1 -
Integer.reverseBytes(int i)- 返回整数 i 字节翻转后的值具体的操作是最高字节与最低字节交换,次高字节与次低字节交换,以此类推,直到全部的字节都实现交换。
例如 0x12345678 翻转后得到 0x78563412 。
-
Integer.sum(int a, int b)- 返回两个整数 a 和 b 的和 -
Integer.max(int a, int b)- Math.max(int a, int b) 的别名 -
Integer.min(int a, int b)- Math.min(int a, int b) 的别名
实例方法
-
Integer.instance.byteValue()- 返回本包装(Integer)对象对应的 byte 强制转换值 -
Integer.instance.shortValue()- 返回本包装(Integer)对象对应的 short 强制转换值 -
Integer.instance.intValue()- 返回本包装(Integer)对象对应的 int 值 -
Integer.instance.longValue()- 返回本包装(Integer)对象对应的 long 强制转换值 -
Integer.instance.floatValue()- 返回本包装(Integer)对象对应的 float 强制转换值 -
Integer.instance.doubleValue()- 返回本包装(Integer)对象对应的 double 强制转换值 -
Integer.instance.toString()- 返回本包装(Integer)对象对应的值的 10 进制字符串 -
Integer.instance.hashCode()- 返回本包装(Integer)对象对应的值的哈希码,其实就是当前的 int 值 -
Integer.instance.equals(Object obj)- 判断本包装(Integer)对象对应的类型(通过 instanceof 运算符)和值是否均与给定的 obj 对象一致,一致返回 true,否则返回 false -
Integer.instance.compareTo(Integer anotherInteger)- 比较本包装(Integer)对象对应的值和给定的 anotherInteger 对象对应的值,如果前者小于后者返回 -1,如果前者大于后者返回 1,否则返回 0
小结
可以看到,Integer 类可用于处理 数串转换、进制转换、比特运算 等。