选对基本类型需依据范围、精度、内存和用途:小范围用byte/short,常规用int,大数用long;float省空间但精度低,金额等须用bigdecimal;转换依容量自动或强制,字符串与数字互转需调用专用方法。

选对基本类型和转对数据,不是靠感觉,而是看范围、精度、内存和用途。用错类型,轻则浪费空间,重则算出错值或直接崩溃。
按数值范围选整数类型
别见数字就用 int —— 它不是万能钥匙。
- 状态码、标志位、小范围计数(0–127):优先用 byte;百万级对象里省下 3 字节/个,就是实实在在的内存收益
- 年龄、年份、班级编号(-32768~32767):用 short 更紧凑,尤其在嵌入式或缓存密集场景
- 用户 ID、页面计数、常规业务整数:int 是默认选择,JVM 对它优化最成熟,32 位 CPU 天然友好
- 时间戳(毫秒)、雪花 ID、超大统计量:必须用 long,字面量记得加 L(如
1721475360000L),否则编译不通过
浮点数不是“有没有小数点”的问题
float 和 double 的区别不在大小,而在精度和开销。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 图形坐标、传感器读数、帧率等允许误差的场景:用 float(4 字节),比 double 节省一半内存,运算也稍快
- 金额、科学计算、风控规则等要求精确结果的场合:绝不用 float/double,改用 BigDecimal;若硬要用基本类型,至少选 double,并配合
Math.round()或RoundingMode显式控制舍入 - 注意:所有带小数点的字面量默认是 double;写
3.14f才是 float;0.1 + 0.2 != 0.3是浮点表示限制,不是 bug
转换要分清自动还是强制
Java 按“容量从小到大”排了隐含顺序:byte → short → char → int → long → float → double。
- 小转大自动完成:比如
int i = 100; long l = i;或char c = 'A'; int n = c;(得 65) - 大转小必须强制:如
double d = 4.99; int x = (int) d;→ 得 4(直接截断,不四舍五入) - 危险操作:
int x = 257; byte b = (byte) x;→ 实际是 -1(超出 -128~127 后补码溢出) - boolean 不参与任何数值转换,也不能和 0/1 互转;需要三态时,用 Boolean 包装类
字符串和基本类型互转不能靠强转
字符串不是基本类型,cast 语法(如 (int)"123")根本通不过编译。
- 数字转字符串:推荐
String.valueOf(123)(安全,null 返回 "null")或Integer.toString(123) - 字符串转数字:用
Integer.parseInt("123")、Double.parseDouble("3.14")等,但非法输入(如空串、"abc")会抛NumberFormatException - 稳妥做法:先正则校验格式(如
"^-?\d+$"),再解析;或包裹try-catch,别指望运行时自动兜底
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










