Java 打印值索引
Java格式 - Java 打印值索引
以下代码使用 s
转换将其参数格式化为字符串。
public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B", "C"); } }
上面的代码生成以下结果。
格式字符串中的格式说明符可以通过三种方式引用参数:
- 普通索引
- 显式索引
- 相对索引
普通索引
当格式说明符没有指定参数索引值作为上面的代码时,它被称为普通索引。
在普通索引中,参数索引由格式字符串中格式说明符的位置确定。
不带参数索引的第一个格式说明符的索引为1,它指的是第一个参数。
对于以下格式字符串,
System.out.printf("%s, %s, and %s", "A", "B", "C");
第一个%s
的索引为1,第二个%s
的2。
索引为1的第一个“%s"格式指的是第一个参数“A"。第二个“%s"格式指第二个参数“B"。
如果在格式字符串中有比格式说明符更多的参数,则将忽略额外的参数。
将抛出 java.util.MissingFormatArgumentException
如果有比参数更多的格式说明符。
以下代码将抛出异常,因为参数的数量少于格式说明符的数量。
public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B"); } }
上面的代码生成以下结果。
Formatter
的 format()
方法的最后一个参数class是一个varargs参数。 我们还可以将数组传递给varargs参数。
显式索引
显式索引在格式说明符中明确指定了参数索引。
参数索引,以 $
结尾的整数,在格式说明符中紧跟在%符号之后。
以下代码使用带有显式索引的三个格式说明符:“%1 $ s",“%2 $ s"和“%3 $ s"。
public class Main { public static void main(String[] args) { System.out.printf("%1$s, %2$s, and %3$s", "A", "B", "C"); } }
上面的代码生成以下结果。
显式索引可以引用参数列表中任何顺序的参数。
public class Main { public static void main(String[] args) { System.out.printf("%3$s, %2$s, and %1$s", "A", "B", "C"); } }
上面的代码生成以下结果。
我们可以使用显式索引和多次引用相同的参数不引用格式字符串中的一些参数。
public class Main { public static void main(String[] args) { System.out.printf("%3$s, %2$s, and %2$s", "A", "B", "C"); } }
上面的代码生成以下结果。
相对索引
在相对索引中,格式说明符使用与先前格式说明符使用的参数相同的参数。
相对索引不使用参数索引值。它使用“<" 字符作为格式说明符中的标志。
我们不能使用相对索引作为第一个格式说明符,因为必须有一个先前的格式说明符。
以下代码使用相对索引:
public class Main { public static void main(String[] args) { System.out.printf("%1$s, %<s, %<s, %2$s, and %<s", "A", "B"); } }
上面的代码生成以下结果。
可以具有比用于相对索引的格式说明符的数目少的参数。
更多建议: