背景
函数式编程学习中,并行流,需要打印线程名作为参照,于是用到了上述代码,对于代码里的%-12s,之前没见过,于是去进行了搜索,在此做个记录
搜索结果
在 System.out.printf 方法中,格式化字符串 "%-12s %s%n" 用于定义输出的格式。让我们逐个解析这些符号的含义:
%s:这是一个转换符,表示将对应的参数作为字符串输出。-:这是标志符,当与宽度(如12)一起使用时,它表示左对齐。如果没有这个减号,则默认为右对齐。12:这是最小字段宽度。它指定了输出的字符串至少要占用12个字符的空间。如果字符串本身长度不足12个字符,那么根据对齐方式(左或右),会用空格填充到指定的宽度。%-12s:结合上述解释,这意味着第一个参数simple()的返回值会被当作字符串处理,并且会在输出时左对齐,确保其占据至少12个字符的空间。如果simple()返回的字符串长度小于12,那么多余的空间会用空格填充;如果大于12,则按实际长度输出,不会被截断。%s:这是第二个转换符,表示将第二个参数"create"作为字符串输出,没有指定宽度,所以它会按照原样输出。%n:这是一个平台独立的行分隔符,相当于在不同的操作系统上输出换行符(例如,在Windows上是\r\n,在Unix/Linux/Mac OS X上是\n)。这会使得每次调用printf后光标移动到下一行的开始。
综上所述,System.out.printf("%-12s %s%n", simple(), "create"); 这行代码将会输出由 simple() 方法返回的字符串,左对齐并占12个字符宽度,后面跟着一个空格和字符串 "create",最后是一行换行。如果 simple() 返回 "example",则输出看起来会像这样(假设 "example" 有8个字符,所以前面有4个空格补足12个字符宽度):
example create
请注意,实际显示的空格数量取决于 simple() 返回的字符串长度。如果返回的是更短或更长的字符串,空格的数量会相应调整。