You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Java String.format格式符的疑问:%4s与%-30s用法解析

解析String.format中的格式符逻辑

先明确String.format的格式符基本结构:%[标志][宽度][.精度]类型,你的代码和输出是典型的对齐表格场景,逐个拆解你疑惑的部分:

1. %4s 的作用

s表示格式化字符串类型,4是指定该字段的总宽度为4个字符。你的参数是"CM01",刚好是4个字符,所以直接输出占满4位——这和表头的Code(4字符)、分隔线----(4字符)完全对齐,输出就是CM01。如果参数是更短的字符串(比如"CM"),会在前面补空格凑够4位,变成 CM。

2. %-30s 的含义

-是左对齐标志(默认是右对齐),30是总宽度,s是字符串类型。意思是:这个字段占30个字符宽度,内容靠左对齐,剩下的位置用空格填充。
你的参数"Computer Monitor"是16个字符,左对齐后会在后面补14个空格凑够30位——刚好对应表头Item name下面的30个横杠------------------------------,让整个列和表头完美对齐。如果去掉-标志,字符串会右对齐,变成前面补空格,就会和表头的左对齐文本错位。

其他格式符的补充(理解整体对齐逻辑)

剩下的格式符都是为了匹配表头的列宽:

  • %3d:d是整数类型,总宽度3。参数2只有1位,前面补2个空格变成 2,和表头QTY(3字符)、分隔线---对齐。
  • %10.2f:f是浮点数类型,.2表示保留2位小数(自动四舍五入,比如114.9884变成114.98),10是总宽度(包含小数点和小数部分)。114.98占6位,前面补4个空格凑够10位,对应表头Unit Price下的10个横杠。
  • %11.2f:逻辑和上面一致,总宽度11,保留2位小数,229.96占6位,前面补5个空格,对应Total Price下的11个横杠。

整体来看,所有格式符都是为了让每个字段的宽度和表头列宽严格匹配,从而输出整齐的表格样式。

内容的提问来源于stack exchange,提问作者Bryan Heddle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:50:22