Java - String format() 方法



描述

Java String format() 方法用于使用指定的区域设置、格式字符串和对象参数获取格式化的字符串。如果在 String.format() 方法中未指定区域设置,则通过调用 Locale.getDefault() 方法本身使用默认区域设置。

在 Java 中,区域设置是一个表示特定地理、政治或文化区域的对象。format() 方法接受不同的参数,例如区域设置、格式和对象,这些参数分别保存区域设置 l、字符串格式和对象参数的值。

format() 方法有两个多态变体,具有不同的参数,如下面的语法所示。

语法

以下是 Java String format() 方法的语法 -

public static String format(Locale l, String format, Object... args) //first syntax
public static String format(String format, Object... args) // second syntax

参数

  • l - 这是在格式化期间要应用的区域设置。如果为 null,则不应用任何本地化。

  • format - 这是一个格式字符串。

  • args - 这是格式字符串中格式说明符引用的参数。如果参数多于格式说明符,则会忽略多余的参数。参数的数量是可变的,可以为零。

返回值

此方法使用指定的区域设置、格式字符串和参数返回格式化的字符串。

使用区域设置获取格式化字符串示例

如果我们将 区域设置、格式和对象参数作为参数传递给此方法,它将返回一个格式化的字符串。

在下面的程序中,我们使用值 "Java Programming" 实例化字符串类。然后,使用 format() 方法,我们尝试在指定的区域设置 "Locale.CANADA" 和对象参数处格式化当前字符串。

package com.tutorialspoint;

import java.util.Locale;

public class Format {
   public static void main(String[] args) {
     
      //instantiate the string class
      String str = new String("Ramesh");
      System.out.println("The given string is: " + str);
      System.out.println("After formatting the string.....\n" 
         + String.format(Locale.CANADA, "My name is: %s", str));
   }
}

输出

执行上述程序后,将产生以下结果 -

The given string is: Ramesh
After formatting the string....
My name is: Ramesh

格式化字符串示例

如果我们将 格式和对象参数作为参数传递给方法,则此方法将返回一个格式化的字符串。

在下面的示例中,我们使用值 "TutorialsPoint" 创建字符串类的对象。使用 format() 方法,我们尝试获取当前字符串在指定格式中的格式化字符串。

package com.tutorialspoint;

import java.util.Locale;

public class Format {
   public static void main(String[] args) {
      
      // create an object of the string class
      String str = new String("TutorialsPoint");
      
      // initialize the double variable
      Double d = 234.454d;
      System.out.println("The given string is: " + str);
      System.out.println("The given double value is: " + d);
      
      // use format() method
      String new_str;
      String new_str1;
      new_str = String.format("Welcome to the %s", str);
      new_str1 = String.format("The result is: %15f", d);
      System.out.println("The formatted string is: " + new_str);
      System.out.println("The formatted value is: " + new_str1);
   }
}

输出

以下是上述程序的输出 -

The given string is: TutorialsPoint
The given double value is: 234.454
The formatted string is: Welcome to the TutorialsPoint
The formatted value is: The result is:     234.454000

检查格式化字符串时出现的 NullPointerException 示例

如果格式值为 null,则 format() 方法将返回 NullPointerException

在此示例中,我们使用值 "Hello" 创建字符串类的实例。然后,使用 format() 方法,我们尝试获取当前字符串在指定格式 null 中的格式化字符串。

package com.tutorialspoint;

import java.util.Locale;

public class Format {
   public static void main(String[] args) {
      try {
         
         // create a string literal
         String str1 = new String("Hello");
         System.out.println("The given string is: " + str1);
         
         // using format() method
         String new_str = String.format(Locale.CANADA, null, str1);
      } catch(Exception e) {
         e.printStackTrace();
         System.out.println("Exception: " + e);
      }
   }
}

输出

上述程序产生以下结果 -

The given string is: Hello
java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
	at java.base/java.util.Formatter.parse(Formatter.java:2717)
	at java.base/java.util.Formatter.format(Formatter.java:2671)
	at java.base/java.util.Formatter.format(Formatter.java:2625)
	at java.base/java.lang.String.format(String.java:4184)
	at com.tutorialspoint.String.Format.main(Format.java:11)
Exception: java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null

检查格式化字符串时出现的 IllegalFormatException 示例

如果我们将 非法格式语法传递给方法,它将抛出 IllegalFormatException。

在此程序中,我们使用值 "Tutorix" 创建字符串类的对象。然后,使用 format() 方法,我们尝试获取当前字符串对象在指定格式 "%d" 中的格式化字符串。由于我们对字符串使用 "%d" 格式,因此该方法将抛出异常。

package com.tutorialspoint;

import java.util.Locale;

public class Format {
   public static void main(String[] args) {
      try {
         
         // create an object of the string class
         String str = new String("Tutorix");
         System.out.println("The given string is: " + str);
         
         // using format method we pass
         String new_string = String.format("%d", str);
         System.out.println("The new formatted string is: " + new_string);
      } catch(Exception e) {
         e.printStackTrace();
         System.out.println("Exception: " + e);
      }
   }
}

输出

执行上述程序后,将产生以下输出 -

The given string is: Tutorix
java.util.IllegalFormatConversionException: d != java.lang.String
	at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4442)
	at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2963)
	at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2918)
	at java.base/java.util.Formatter.format(Formatter.java:2689)
	at java.base/java.util.Formatter.format(Formatter.java:2625)
	at java.base/java.lang.String.format(String.java:4143)
	at com.tutorialspoint.String.Format.main(Format.java:10)
Exception: java.util.IllegalFormatConversionException: d != java.lang.String
java_lang_string.htm
广告