Java String format()方法根據(jù)傳遞的參數(shù)返回格式化的字符串。
String format()方法的語法為:
String.format(String format, Object... args)
注意:
format()是靜態(tài)方法。我們使用類名String調(diào)用format()方法。
在上面的代碼中,... 表示可以向format()傳遞多個對象。
format - 格式字符串
args - 0個或更多參數(shù)
返回格式化的字符串
class Main { public static void main(String[] args) { String language = "Java"; int number = 30; String result; // 將對象格式化為字符串 result = String.format("Language: %s", language); System.out.println(result); // Language: Java //將數(shù)字格式化為十六進制數(shù)字 result = String.format("十六進制數(shù): %x", number); // 1e System.out.println(result); // 十六進制數(shù): 1e } }
在上面的程序中,注意代碼
result = String.format("Language: %s", language);
這"Language: %s"是一個格式字符串。
將格式字符串中的%s替換為language內(nèi)容。%s是格式說明符。
同樣,%x替換為String.format("Number: %x", number)中number的十六進制值。
以下是常用的格式說明符:
說明符 | 描述 |
---|---|
%b, %B | 根據(jù)參數(shù)為“ true”或“ false” |
%s, %S | 一個字符串 |
%c, %C | Unicode字符 |
%d | 十進制整數(shù)(僅用于整數(shù)) |
%o | 八進制整數(shù)(僅用于整數(shù)) |
%x, %X | 十六進制整數(shù)(僅用于整數(shù)) |
%e, %E | 用于科學(xué)計數(shù)法(用于浮點數(shù)) |
%f | 用于十進制數(shù)字(用于浮點數(shù)) |
class Main { public static void main(String[] args) { int n1 = 47; float n2 = 35.864f; double n3 = 44534345.76d; //格式為八進制數(shù)字 System.out.println(String.format("n1的八進制: %o", n1)); // 57 //格式為十六進制數(shù)字 System.out.println(String.format("n1的十六進制: %x", n1)); // 2f System.out.println(String.format("n1的十六進制: %X", n1)); // 2F //格式化為字符串 System.out.println(String.format("n1作為字符串: %s", n1)); // 47 System.out.println(String.format("n2作為字符串: %s", n2)); // 35.864 //科學(xué)記數(shù)格式 System.out.println(String.format("n3科學(xué)計數(shù)法: %g", n3)); // 4.45343e+07 } }
輸出結(jié)果
n1的八進制: 57 n1的十六進制: 2f n1的十六進制: 2F n1作為字符串: 47 n2作為字符串: 35.864 n3科學(xué)計數(shù)法: 4.45343e+07
您可以在格式字符串中使用多個格式說明符。
//使用多個格式說明符 //格式字符串 class Main { public static void main(String[] args) { int n1 = 47; String text = "Result"; System.out.println(String.format("%s\n十六進制: %x", text, n1)); } }
輸出結(jié)果
Result 十六進制: 2f
此處,%s被替換為text的值。 同樣,%o被替換為n1的十六進制值。
class Main { public static void main(String[] args) { float n1 = -452.534f; double n2 = -345.766d; //按原樣格式化浮點數(shù) System.out.println(String.format("n1 = %f", n1)); // -452.533997 System.out.println(String.format("n2 = %f", n2)); // -345.766000 //顯示到小數(shù)點后兩位 System.out.println(String.format("n1 = %.2f", n1)); // -452.53 System.out.println(String.format("n2 = %.2f", n2)); // -345.77 } }
輸出結(jié)果
n1 = -452.533997 n2 = -345.766000 n1 = -452.53 n2 = -345.77
注意:當(dāng)我們使用%f格式化-452.534時,我們得到-452.533997。 這不是因為format()方法。 Java沒有返回浮點數(shù)的確切表示形式。
使用%.2f格式說明符時,format()在小數(shù)點后給出兩個數(shù)字。
// using more than one format specifiers // in a format string class Main { public static void main(String[] args) { int n1 = 46, n2 = -46; String result; //用空格填充數(shù)字 //字符串的長度為5 result = String.format("|%5d|", n1); // | 46| System.out.println(result); //用數(shù)字0填充數(shù)字 //字符串的長度為5 result = String.format("|%05d|", n1); // |00046| System.out.println(result); //在數(shù)字前使用符號 result = String.format("%+d", n1); // +46 System.out.println(result); result = String.format("%+d", n2); // -46 System.out.println(result); //將負(fù)數(shù)括在括號內(nèi) //并刪除符號 result = String.format("%(d", n2); // (46) System.out.println(result); } }
//在十六進制前使用0x //在八進制之前使用0 class Main { public static void main(String[] args) { int n = 46; System.out.println(String.format("%#o", n)); // 056 System.out.println(String.format("%#x", n)); // 0x2e } }
如果必須使用指定的語言環(huán)境,則String format()方法還具有另一種語法。
String.format(Locale l,String format, Object... args)
//使用 Locale import java.util.Locale; class Main { public static void main(String[] args) { int number = 8652145; String result; //使用當(dāng)前語言環(huán)境 result = String.format("數(shù)字: %,d", number); System.out.println(result); //使用GERMAN語言環(huán)境作為第一個參數(shù) result = String.format(Locale.GERMAN, "德語數(shù)字: %,d", number); System.out.println(result); } }
輸出結(jié)果
數(shù)字: 8,652,145 德語數(shù)字: 8.652.145
注意:在德國,整數(shù)用.代替,。