Java中字符串格式化是通过String类的format()方法来实现的,该方法有两种定义:
public static String format(String format,
Object... args)
public static String format(Locale l,
String format,
Object... args)
这两种用法,都有“String format”参数,该参数对应如下三种格式:
(1)、常规类型、字符类型和数值类型的格式说明符的语法
%[argument_index$][flags][width][.precision]conversion
(2)、用来表示日期和时间类型的格式说明符的语法
%[argument_index$][flags][width]conversion
(3)、与参数不对应的格式说明符的语法
%[flags][width]conversion
以上前两种语法含“argument_index$”部分,它的意思就是参数索引。以下介绍这些参数索引的用法:
argument_index$是可选的,是一个十进制整数,用于表明参数在参数列表中的位置。第1个参数由 "1$" 引用,第2个参数由 "2$" 引用,第3个参数由 "3$" 引用,依此类推。
本例的关键代码如下:
btnNewButton01.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String strRes;
//1、不使用参数索引
//第1个转换,对应第1个变量;第2个转换,对应第2个变量;第3个转换,对应第3个变量。
strRes = String.format("%d-%d-%d",100,200,300);
textField01.setText(strRes); //显示为100-200-300
//可见,不使用参数索引时,参数从左到右依次提前变量。
//2、使用参数索引
//第1个转换,对应第1个变量;第2个转换,对应第2个变量;第3个转换,对应第3个变量。
strRes = String.format("%1$d-%2$d-%3$d",100,200,300);
textField02.setText(strRes); //显示为100-200-300
//可见,使用从小到大顺序的参数索引,与不使用参数索引的效果一致。
//3、参数索引部分顺序
//第1个转换,对应第1个变量;第2个转换,对应第3个变量;第3个转换,对应第2个变量。
strRes = String.format("%1$d-%3$d-%2$d",100,200,300);
textField03.setText(strRes);//显示为100-300-200
//可见,参数索引可以改变,而变量或者常量的顺序不会变(始终从小到大排列)。
//4、参数索引完全改变顺序
//第1个转换,对应第3个变量;第2个转换,对应第2个变量;第3个转换,对应第1个变量。
strRes = String.format("%3$d-%2$d-%1$d",100,200,300);
textField04.setText(strRes); //显示为300-200-100
//可见,参数索引可以改变,而变量或者常量的顺序不会变(始终从小到大排列)。
}
});