以下是Java中Integer
类的全部静态方法及其使用教程,涵盖Java 8至Java 21的更新内容,结合代码示例和实际应用场景分类讲解。
一、类型转换与解析
1. parseInt(String s)
将字符串解析为int
值。
int num = Integer.parseInt("123"); // num = 123
- 注意:字符串必须为十进制整数,否则抛出
NumberFormatException
。
2. parseInt(String s, int radix)
按指定进制解析字符串为int
值。
int binary = Integer.parseInt("1010", 2); // binary = 10(二进制转十进制)
int hex = Integer.parseInt("A", 16); // hex = 10(十六进制转十进制)
- 范围限制:
radix
必须在2-36
之间。
3. parseUnsignedInt(String s)
将字符串解析为无符号整数(范围0
至2^32-1
)。
long unsigned = Integer.parseUnsignedInt("4294967295"); // unsigned = 4294967295L
4. valueOf(int i)
返回Integer
对象,优先使用缓存(-128~127)。
Integer a = Integer.valueOf(100); // 使用缓存对象
Integer b = Integer.valueOf(200); // 新建对象
5. valueOf(String s)
解析字符串并返回Integer
对象。
Integer num = Integer.valueOf("123"); // 等效于new Integer(123)
6. decode(String nm)
解析带有进制前缀的字符串(如0x
、#
、0
)。
Integer hex = Integer.decode("0xFF"); // 255
Integer octal = Integer.decode("077"); // 63(八进制)
二、字符串生成
7. toString(int i)
将int
转换为十进制字符串。
String s = Integer.toString(255); // "255"
8. toBinaryString(int i)
返回二进制字符串。
String binary = Integer.toBinaryString(10); // "1010"
9. toHexString(int i)
返回十六进制字符串。
String hex = Integer.toHexString(255); // "ff"
10. toOctalString(int i)
返回八进制字符串。
String octal = Integer.toOctalString(63); // "77"
11. toUnsignedString(int i)
将整数视为无符号数,转换为十进制字符串。
String unsigned = Integer.toUnsignedString(-1); // "4294967295"
12. toUnsignedString(int i, int radix)
按指定进制将无符号整数转为字符串。
String s = Integer.toUnsignedString(-1, 16); // "ffffffff"
三、比较与逻辑运算
13. compare(int x, int y)
比较两个int
值的大小。
int result = Integer.compare(5, 10); // -1(5 < 10)
14. compareUnsigned(int x, int y)
无符号比较。
int res = Integer.compareUnsigned(-1, 1); // 1(无符号下-1被视为更大的数)
15. signum(int i)
返回符号函数值(-1、0、1)。
int sign = Integer.signum(-5); // -1
16. max(int a, int b)
返回两个数中的较大值。
int max = Integer.max(3, 7); // 7
17. min(int a, int b)
返回两个数中的较小值。
int min = Integer.min(3, 7); // 3
四、位操作与进制方法
18. bitCount(int i)
计算二进制中1的个数。
int count = Integer.bitCount(0b1010); // 2
19. highestOneBit(int i)
返回最高位1所代表的值。
int highest = Integer.highestOneBit(10); // 8(二进制0b1000)
20. lowestOneBit(int i)
返回最低位1所代表的值。
int lowest = Integer.lowestOneBit(12); // 4(二进制0b100)
21. numberOfLeadingZeros(int i)
返回二进制前导零的数量。
int zeros = Integer.numberOfLeadingZeros(8); // 28(32位中前导0的数量)
22. reverse(int i)
反转二进制位的顺序。
int reversed = Integer.reverse(0b10100000); // 0x000000A8
23. reverseBytes(int i)
反转字节顺序。
int bytesReversed = Integer.reverseBytes(0x12345678); // 0x78563412
24. rotateLeft(int i, int distance)
循环左移指定位数。
int rotated = Integer.rotateLeft(0b1000, 2); // 0b100000(实际为32位操作)
25. rotateRight(int i, int distance)
循环右移指定位数。
int rotated = Integer.rotateRight(0b1000, 2); // 0b10(32位操作)
五、系统属性与常量
26. getInteger(String nm)
读取系统属性并返回Integer
对象。
Integer prop = Integer.getInteger("user.count"); // 获取系统属性user.count的值
27. getInteger(String nm, int val)
若系统属性不存在,返回默认值。
int val = Integer.getInteger("thread.pool.size", 10); // 默认10
28. BYTES
返回int
类型的字节数(固定为4)。
int bytes = Integer.BYTES; // 4
29. SIZE
返回int
类型的位数(固定为32)。
int bits = Integer.SIZE; // 32
30. MAX_VALUE
int
最大值(2^31-1)。
int max = Integer.MAX_VALUE; // 2147483647
31. MIN_VALUE
int
最小值(-2^31)。
int min = Integer.MIN_VALUE; // -2147483648
六、无符号转换(Java 8+)
32. divideUnsigned(int dividend, int divisor)
无符号除法。
int result = Integer.divideUnsigned(-1, 2); // 2147483647(将-1视为无符号数)
33. remainderUnsigned(int dividend, int divisor)
无符号取余。
int rem = Integer.remainderUnsigned(-1, 10); // 5
34. toUnsignedLong(int x)
将int
转为无符号long
。
long unsigned = Integer.toUnsignedLong(-1); // 4294967295L
七、其他实用方法
35. sum(int a, int b)
求和(等效于a + b
)。
int sum = Integer.sum(3, 5); // 8
36. hashCode(int value)
返回int
的哈希码(与value
相同)。
int hash = Integer.hashCode(100); // 100
总结与最佳实践
-
优先使用静态工厂方法:
valueOf
替代构造函数(利用缓存)。parseInt
替代直接字符串转换(更安全)。
-
处理异常:
try {int num = Integer.parseInt("12A3"); // 抛出NumberFormatException } catch (NumberFormatException e) {System.err.println("Invalid number format"); }
-
无符号操作场景:
- 处理IP地址、颜色值等需无符号运算的场景。
通过掌握这些方法,可高效处理整数转换、位操作及系统属性读取等需求。