Java基本类型无内置格式,格式化实为转字符串并按样式输出;先用String.valueOf()或包装类toString()转字符串,再用String.format()或DecimalFormat控制格式。

Java 中基本数据类型本身没有“数据格式”概念,它们是纯值(如 int 就是 32 位二进制整数),不带显示样式或文本规则。所谓“转换数据格式”,实际是指将基本类型**转为字符串表示**,并按特定样式(如补零、千分位、小数位数等)输出——这属于**字符串格式化范畴**,不是类型本身的转换。
基本类型 → 字符串:选对方法再加格式
先转成字符串,再控制格式。核心分两步:
-
首选 String.valueOf() 或包装类 toString():语义清晰、性能好、无额外对象开销。例如:
String s = String.valueOf(42);或String s = Integer.toString(42); - 需要格式控制时,用 String.format() 或 DecimalFormat:它们不改变数值本质,只影响字符串外观。
按需求选格式化方式
简单补零或固定宽度:用 String.format()
-
String.format("%05d", 7)→"00007"(5 位,不足左补 0) -
String.format("%.2f", 3.14159)→"3.14"(保留两位小数,四舍五入)
带千分位、货币、本地化格式:用 DecimalFormat
立即学习“Java免费学习笔记(深入)”;
-
new DecimalFormat("#,###").format(1234567)→"1,234,567" -
new DecimalFormat("¥#,##0.00").format(1234.5)→"¥1,234.50"
注意边界与安全细节
格式化前确保原始值合法,避免运行时异常:
- 浮点数如
Double.NaN、Double.POSITIVE_INFINITY能被String.valueOf()或Double.toString()正确转为"NaN"、"Infinity";但String.format("%.2f", Double.NaN)会抛异常。 - 字符串拼接(如
"" + 123)虽简洁,但底层隐式创建StringBuilder,不适合高频或性能敏感场景。 - 若原始字符串来自用户输入,需先校验再解析(如用
Integer.parseInt()前检查是否为纯数字),否则易触发NumberFormatException。
字符和布尔类型要特别对待
它们不参与数值格式化,但有明确的字符串约定:
-
char c = 'A'; String s = Character.toString(c);→"A"(推荐,语义最直接) -
boolean b = true; String s = Boolean.toString(b);→"true"(全小写,区分于自定义拼接) - 避免用
String.valueOf('A')虽结果相同,但对char类型不如Character.toString()直观明确。


















