Integer API详解

news/2025/3/25 21:17:08/文章来源:https://www.cnblogs.com/bravecap/p/18788466

以下是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)

将字符串解析为无符号整数(范围02^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

总结与最佳实践

  1. 优先使用静态工厂方法

    • valueOf替代构造函数(利用缓存)。
    • parseInt替代直接字符串转换(更安全)。
  2. 处理异常

    try {int num = Integer.parseInt("12A3"); // 抛出NumberFormatException
    } catch (NumberFormatException e) {System.err.println("Invalid number format");
    }
    
  3. 无符号操作场景

    • 处理IP地址、颜色值等需无符号运算的场景。

通过掌握这些方法,可高效处理整数转换、位操作及系统属性读取等需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术

Hadoop Hadoop是一个能够对大量数据进行分布式处理的软件框架 HDFS ​ HDFS(Hadoop Distributed File System,Hadoop的分布式文件管理系统),是Hadoop的两大核心之一,用于管理数据和文件 Hadoop安装 ​ Hadoop可以在Window系统上运行,但其官方支持的操作系统只有Liunx,所以…

User\main.c(7): error: #5: cannot open source input file ds18b02.h: No such file or directory

报错截图解决途径 复制报错信息上网搜索,一般的解决办法:在c/c++选项中的Include Paths中包含头文件,将移植过来的代码放到指定的文件夹里,在Floder Setup中设置新移植的文件路径。很可惜我确认过我包含了头文件,但仍然报同样错误。 最后发现我代码里面是 #include"d…

Bean注入几种方式 (放入Spring容器)

目录 1、XML方式注入set方式注入构造方法注入2、注解方式注入@Component + @ComponentScan@Configuration + @Bean + @ComponentScan@Import3、实现ImportBeanDefinitionRegistrar接口 4、实现FactoryBean 5、实现BeanDefinitionRegistryPostProcessor 一、XML方式注入 在现在这…

自然资源数据要素支撑场景建设

自然资源数据要素与场景建设是推动经济社会高质量发展的重要途径。随着数字经济的快速发展,自然资源数据已成为关键的生产要素,其价值挖掘和利用成为推动经济社会发展的关键。自然资源数据要素的重要性自然资源数据要素包括地理、土地、矿产、海洋等多源数据,是支撑经济社会…

C语言分支与循环基础应用编程

实验任务1#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5int main() {int number;int i;srand(time(0));for(i=0;i<N;++i){number=rand()%100+1;printf("20490042%04d\n",number);}return 0; }问题1:生成一个1~100的随机…

NSSCTF Round#28 Team web题解

真是让人操心,但是又无法转移视线ez_ssrf 很简单的ssrf,知识点在网上搜都能搜到 payload http://node3.anna.nssctf.cn:28658@127.255.255.254/flag ez_php 第一部分有个非预期,直接/file就能出flag is_numeric绕过和md5强比较,很简单的知识点,这里就不细说了 第二部分网上…

Netty源码—4.客户端接入流程

大纲 1.关于Netty客户端连接接入问题整理 2.Reactor线程模型和服务端启动流程 3.Netty新连接接入的整体处理逻辑 4.新连接接入之检测新连接 5.新连接接入之创建NioSocketChannel 6.新连接接入之绑定NioEventLoop线程 7.新连接接入之注册Selector和注册读事件 8.注册Reactor线程…

【Esp32】为 idf 定制本地 Arduino 组件

在开始今天的水文前,老周先要奉劝一下国内某些嵌入式砖家和穴者,不要看不起 Arduino,它不是一种开发板,而是一种规范。Arduino 的思想是正确的,把各种开发板封装为统一的 API,让许多开源库共享相同的基础代码,严重降低了移植成本。Arduino 本质上使用的是 C/C++ 开发,只…

编译原理第五次作业

2.2.1 1)S-> S S *-> S S + S *->a S + S *->a a + S *->a a + a * 2)3)L={由多个a,加号,乘号组成的后缀表达式} 2.2.2 1)L={0^n 1^n | n>=1} 2)L={由多个a,加号,减号组成的前缀表达式} 3)L={ε或任意排列,嵌套的括号} 4)L={ε或包含相同数量a,b的字符…

XN2025 集训记录 D2

我好想你们啊 . 我怀念高一啊 . 至少还有理由放任自己开心不是吗 .XN2025 集训记录 D2 又是摆烂的一天 , 感觉打模拟赛时候的自己和改题时的自己完全不是一个人 . 不过往好了想 , 至少足够的模拟赛量 , 意味着我的高效率时间虽然不多 , 但是还有 . 买了个usb转网线 , 破费 39.9…

基于对偶二次曲线的快速椭圆检测

利用对偶二次曲线可精确求解椭圆圆心坐标。1、对偶二次曲线原理 二次曲线也称圆锥曲线,其几何定义是一个平面与两个顶点相对的圆锥相交所产生的交线。通常二次曲线指的是点二次曲线,它是定义在曲线点上的方程。而在射影几何中,齐次点和齐次线存在着可以互换的二元关系,因此…

【程设の旅】Python速通作业三

这节课老师讲了Python的面向对象部分 速度比较快 但是结合前面cpp的大部分知识可以弄懂 最后一道题估计是py特性了 可以理解但是那两个函数不知道是什么鬼 01:运算符的实现 描述 程序填空class A:def __init__(self,x):self.x = x // 在此处补充你的代码 a,b,c = map(int,input…