在Java中处理整数涉及多种数据类型、操作和最佳实践,以下是详细指南:
Java整数数据类型
Java提供4种整数基本类型,根据数值范围选择:
-
byte
- 范围:-128 ~ 127
- 适用场景:小范围数值(如文件读写)
byte smallNum = 100;
-
short
- 范围:-32,768 ~ 32,767
- 适用场景:中等数值(如数组索引)
short index = 30000;
-
int(最常用)
- 范围:-2³¹ ~ 2³¹-1(约±21亿)
- 默认整数类型
int count = 2_147_483_647; // 下划线提高可读性
-
long
- 范围:-2⁶³ ~ 2⁶³-1
- 需添加
L
后缀long bigNum = 9_223_372_036_854_775_807L;
包装类与对象操作
基本类型对应包装类(支持null和集合操作):
Integer objInt = 100; // 自动装箱 int primInt = objInt; // 自动拆箱 // 常用方法 int max = Integer.MAX_VALUE; // 获取最大值 String numStr = Integer.toString(255); // 转字符串 int parsed = Integer.parseInt("FF", 16); // 解析16进制 → 255
核心操作与运算
-
算术运算
int a = 10, b = 3; int sum = a + b; // 13 int quotient = a / b; // 3(整数除法舍去小数) int remainder = a % b; // 1
-
溢出处理
整数超出范围会循环(需主动检测):int max = Integer.MAX_VALUE; int overflow = max + 1; // 结果 → -2147483648
-
位运算
高效处理二进制:int flags = 0b1010; // 二进制字面量 int shift = flags << 2; // 左移2位 → 0b101000 (40) int mask = flags & 0b0010; // 按位与 → 2
-
比较与边界
if (a > b) { ... } boolean inRange = (num >= 0 && num <= 100);
类型转换规则
-
隐式转换(小类型→大类型)
byte b = 100; int i = b; // 自动转换
-
显式转换(大类型→小类型,可能丢失精度)
int large = 200; byte small = (byte) large; // 值溢出 → -56
最佳实践与常见问题
-
避免整数除法陷阱
整数相除会丢弃小数部分:int result = 5 / 2; // 结果为2,非2.5 double correct = 5.0 / 2; // 需使用浮点数
-
处理`NumberFormatException
解析字符串时需捕获异常:try { int num = Integer.parseInt("123abc"); } catch (NumberFormatException e) { System.out.println("非法数字格式"); }
-
使用
Math
工具类int abs = Math.abs(-10); // 绝对值 int max = Math.max(5, 10); // 取最大值
-
大整数处理
超出long
范围时使用BigInteger
:BigInteger hugeNum = new BigInteger("12345678901234567890"); hugeNum = hugeNum.multiply(BigInteger.TEN); // 精确计算
性能优化建议
- 循环计数优先用
int
而非long
- 数组存储大量数据时考虑
byte
/short
节省内存 - 位运算替代乘除2的幂次:
a * 8
→a << 3
引用说明基于Oracle官方Java文档(Java SE 17规范)、《Effective Java》第三版中基本类型处理建议,以及Java数值运算的行业实践,关键方法如
Integer.parseInt()
的行为遵循Java语言标准(JLS §8.1.3)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/22759.html