Java String format() 使用方法及示例 - Java教程

由网友 大卫 发布 阅读 15

Java String format() 使用方法及示例 - Java教程

Java String(字符串) 方法

Java String format()方法根据传递的参数返回格式化的字符串。

String format()方法的语法为:

String.format(String format, Object... args)

注意:

  • format()是静态方法。我们使用类名String调用format()方法。

  • 在上面的代码中,... 表示可以向format()传递多个对象。

format()参数

  • format - 格式字符串

  • args - 0个或更多参数

format()返回值

  • 返回格式化的字符串

示例1:Java String format()

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, %CUnicode字符
%d十进制整数(仅用于整数)
%o八进制整数(仅用于整数)
%x, %X十六进制整数(仅用于整数)
%e, %E用于科学计数法(用于浮点数)
%f用于十进制数字(用于浮点数)

示例2:数字的字符串格式

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

您可以在格式字符串中使用多个格式说明符。

示例3:使用多个格式说明符

//使用多个格式说明符
//格式字符串
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的十六进制值。

Java中的字符串格式化期间,格式说明符被对象值替换
Java String format()的工作

示例4:十进制数的格式

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()在小数点后给出两个数字。

示例5:用空格和0填充数字

// 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);
  }
}

示例6:在十六进制和八进制之前使用0x和0

//在十六进制前使用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
  }
}

带有语言环境的Java字符串format()

如果必须使用指定的语言环境,则String format()方法还具有另一种语法。

String.format(Locale l,String format, Object... args)

示例7:在format()中使用GERMAN语言环境

//使用 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

注意:在德国,整数用.代替,。

Java String(字符串) 方法

Java HashMap clone() Java String toCharArray()