以下代碼使用 s
轉(zhuǎn)換將其參數(shù)格式化為字符串。
public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B", "C"); } }
上面的代碼生成以下結(jié)果。
格式字符串中的格式說明符可以通過三種方式引用參數(shù):
當(dāng)格式說明符沒有指定參數(shù)索引值作為上面的代碼時,它被稱為普通索引。
在普通索引中,參數(shù)索引由格式字符串中格式說明符的位置確定。
不帶參數(shù)索引的第一個格式說明符的索引為1,它指的是第一個參數(shù)。
對于以下格式字符串,
System.out.printf("%s, %s, and %s", "A", "B", "C");
第一個%s
的索引為1,第二個%s
的2。
索引為1的第一個“%s"格式指的是第一個參數(shù)“A"。第二個“%s"格式指第二個參數(shù)“B"。
如果在格式字符串中有比格式說明符更多的參數(shù),則將忽略額外的參數(shù)。
將拋出 java.util.MissingFormatArgumentException
如果有比參數(shù)更多的格式說明符。
以下代碼將拋出異常,因?yàn)閰?shù)的數(shù)量少于格式說明符的數(shù)量。
public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B"); } }
上面的代碼生成以下結(jié)果。
Formatter
的 format()
方法的最后一個參數(shù)class是一個varargs參數(shù)。 我們還可以將數(shù)組傳遞給varargs參數(shù)。
顯式索引在格式說明符中明確指定了參數(shù)索引。
參數(shù)索引,以 $
結(jié)尾的整數(shù),在格式說明符中緊跟在%符號之后。
以下代碼使用帶有顯式索引的三個格式說明符:“%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"); } }
上面的代碼生成以下結(jié)果。
顯式索引可以引用參數(shù)列表中任何順序的參數(shù)。
public class Main { public static void main(String[] args) { System.out.printf("%3$s, %2$s, and %1$s", "A", "B", "C"); } }
上面的代碼生成以下結(jié)果。
我們可以使用顯式索引和多次引用相同的參數(shù)不引用格式字符串中的一些參數(shù)。
public class Main { public static void main(String[] args) { System.out.printf("%3$s, %2$s, and %2$s", "A", "B", "C"); } }
上面的代碼生成以下結(jié)果。
在相對索引中,格式說明符使用與先前格式說明符使用的參數(shù)相同的參數(shù)。
相對索引不使用參數(shù)索引值。它使用“<" 字符作為格式說明符中的標(biāo)志。
我們不能使用相對索引作為第一個格式說明符,因?yàn)楸仨氂幸粋€先前的格式說明符。
以下代碼使用相對索引:
public class Main { public static void main(String[] args) { System.out.printf("%1$s, %<s, %<s, %2$s, and %<s", "A", "B"); } }
上面的代碼生成以下結(jié)果。
可以具有比用于相對索引的格式說明符的數(shù)目少的參數(shù)。
更多建議: