Java String format()方法根据传递的参数返回格式化的字符串。
String format()方法的语法为:
String.format(String format, Object... args)
注意:
format()是静态方法。我们使用类名String调用format()方法。
在上面的代码中,... 表示可以向format()传递多个对象。
format - 格式字符串
args - 0个或更多参数
返回格式化的字符串
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
//将数字格式化为十六进制数字
result = String.format("十六进制数: %x", number); // 1e
System.out.println(result); // 十六进制数: 1e
}
}在上面的程序中,注意代码
result = String.format("Language: %s", language);这"Language: %s"是一个格式字符串。
将格式字符串中的%s替换为language内容。%s是格式说明符。
同样,%x替换为String.format("Number: %x", number)中number的十六进制值。
以下是常用的格式说明符:
| 说明符 | 描述 |
|---|---|
| %b, %B | 根据参数为“ true”或“ false” |
| %s, %S | 一个字符串 |
| %c, %C | Unicode字符 |
| %d | 十进制整数(仅用于整数) |
| %o | 八进制整数(仅用于整数) |
| %x, %X | 十六进制整数(仅用于整数) |
| %e, %E | 用于科学计数法(用于浮点数) |
| %f | 用于十进制数字(用于浮点数) |
class Main {
public static void main(String[] args) {
int n1 = 47;
float n2 = 35.864f;
double n3 = 44534345.76d;
//格式为八进制数字
System.out.println(String.format("n1的八进制: %o", n1)); // 57
//格式为十六进制数字
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
//科学记数格式
System.out.println(String.format("n3科学计数法: %g", n3)); // 4.45343e+07
}
}输出结果
n1的八进制: 57 n1的十六进制: 2f n1的十六进制: 2F n1作为字符串: 47 n2作为字符串: 35.864 n3科学计数法: 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));
}
}输出结果
Result 十六进制: 2f
此处,%s被替换为text的值。 同样,%o被替换为n1的十六进制值。

class Main {
public static void main(String[] args) {
float n1 = -452.534f;
double n2 = -345.766d;
//按原样格式化浮点数
System.out.println(String.format("n1 = %f", n1)); // -452.533997
System.out.println(String.format("n2 = %f", n2)); // -345.766000
//显示到小数点后两位
System.out.println(String.format("n1 = %.2f", n1)); // -452.53
System.out.println(String.format("n2 = %.2f", n2)); // -345.77
}
}输出结果
n1 = -452.533997 n2 = -345.766000 n1 = -452.53 n2 = -345.77
注意:当我们使用%f格式化-452.534时,我们得到-452.533997。 这不是因为format()方法。 Java没有返回浮点数的确切表示形式。
使用%.2f格式说明符时,format()在小数点后给出两个数字。
// 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;
//用空格填充数字
//字符串的长度为5
result = String.format("|%5d|", n1); // | 46|
System.out.println(result);
//用数字0填充数字
//字符串的长度为5
result = String.format("|%05d|", n1); // |00046|
System.out.println(result);
//在数字前使用符号
result = String.format("%+d", n1); // +46
System.out.println(result);
result = String.format("%+d", n2); // -46
System.out.println(result);
//将负数括在括号内
//并删除符号
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
}
}如果必须使用指定的语言环境,则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;
//使用当前语言环境
result = String.format("数字: %,d", number);
System.out.println(result);
//使用GERMAN语言环境作为第一个参数
result = String.format(Locale.GERMAN, "德语数字: %,d", number);
System.out.println(result);
}
}输出结果
数字: 8,652,145 德语数字: 8.652.145
注意:在德国,整数用.代替,。