Java string format String.format() method in Java returns a formatted string value based on locale, format, and arguments passed. If we do not specify the locale, it takes the default locale from Locale.getDefault(). The extra arguments will be ignored if more arguments are passed.
This method is similar to sprintf() method of the C language and printf() method of Java Print stream.
Table of Contents
String format() Syntax in Java
We can use the String format() method in below 2 ways:
Without using Locale
public static String format(String format, Object… args)
Using Locale
public static String format(Locale locale, String format, Object… args)
locale – locale which needs to be applied on format() method
format – required string format
args – the arguments for the format string. It can be zero or more.
String format() Exceptions
The Java String format() method throws below 2 exceptions:
NullPointerException – when the format is null
IllegalFormatException or IllelagFormatConversionException – when the specified format is illegal or incompatible
MissingFormatArgumentException – when the argument is missing for the specified format.
Java String format Types
We can use the below string format types to convert into String
Format Type | Data Type | Output |
---|---|---|
%a | Floating point | Hexadecimal value of floating point number |
%b | Any type | “True” if not null and “False” if null |
%c | Character | Unicode character |
%d | Integer | Decimal integer |
%e | Floating point | Decimal number in scientific notation |
%f | Floating point | Decimal number |
%g | Floating point | Decimal number in scientific notation based on precision and value |
%h | Any type | Hex String value from hashCode() method |
%n | None | Platform specific line separator |
%o | Integer | Octal number |
%s | Any type | String |
%t | Date/Time | This is the prefix for date/time conversion. Refer below table for more details |
%x | Integer | Hex string |
Java String format examples
public class Democlass { public static void main(String[] args) { formatString(); } public static void formatString() { System.out.println("Output of %a is " + String.format("%a", 1.5)); System.out.println("Output of %b is " + String.format("%b", false)); System.out.println("Output of %B is " + String.format("%B", true)); System.out.println("Output of %c is " + String.format("%c", 'd')); System.out.println("Output of %d is " + String.format("%d", 101)); System.out.println("Output of %e is " + String.format("%e", 5.6)); System.out.println("Output of %f is " + String.format("%f", 5.6)); System.out.println("Output of %g is " + String.format("%g", 5.6)); System.out.println("Output of %h is " + String.format("%h", 10)); System.out.println("Output of %n is " + String.format("%n")); System.out.println("Output of %o is " + String.format("%o", 8)); System.out.println("Output of %s is " + String.format("%s", "Java")); System.out.println("Output of %x is " + String.format("%x", 10)); } }
Output: Output of %a is 0x1.8p0 Output of %b is false Output of %B is TRUE Output of %c is d Output of %d is 101 Output of %e is 5.600000e+00 Output of %f is 5.600000 Output of %g is 5.60000 Output of %h is a Output of %n is Output of %o is 10 Output of %s is Java Output of %x is a
String format Date Time Types
As mentioned in the above table, we use %t as a prefix for date-time conversions in the Java String format method. When we use an upper case character along with %t, we get output in uppercase. Similarly, when we use lower case character along with %t, we get output in lowercase.
Format Type | Output |
---|---|
%tA | Full name of weekday, Eg: Sunday |
%ta | Short name of weekday, Eg: Sun |
%tB | Full name of month, Eg: January |
%tb | Short name of month, Eg: Jan |
%tC | Year formatted with 2 digits, Eg: 00 to 99 |
%tc | Date and Time in format “%ta %tb %td %tT %tZ %tY”, Eg: Sat May 23 21:25:46 IST 2020 |
%tD | Date in the format “MM/DD/YY”, Eg: 05/23/20” |
%td | Day of the month in 2 digit, Eg: 01 to 31 |
%te | Day of the month without leading 0, Eg: 1 to 31 |
%tF | Formatted date in “YYYY-MM-DD |
%tH | Hour of day in 24 hours format |
%th | Same as %tb |
%tI | Hour of day in 12 hours format |
%tj | Day of the year with leading 0. Eg: 001 to 366 |
%tk | Hour of the day in 24 hours format without leading 0, Eg: 0 to 23 |
%tl | Hour of the day in 12 hours format without leading 0, Eg: 0 to 12 |
%tM | Minute of hour with leading 0, Eg: 00 to 59 |
%tm | Month formatted with leading 0, Eg: 01 to 12 |
%tN | Nanosecond of time formatted with 9 digits and leading 0, Eg: 000000000 to 999999999 |
%tp | Locale specific based on time, Eg: am or pm |
%tQ | Milliseconds |
%tR | Time in 24 hours format as “HH:MM” |
%tr | Time in 12 hours format as “HH:MM:SS AM/PM” |
%tS | Seconds of the minute formatted with 2 digits, Eg: 00 to 59 |
%ts | Seconds |
%tT | Time in 24 hours format as “HH:MM:SS” |
%tY | Year in 4 digits format as “YYYY” |
%ty | Year in 2 digits format as “YY” |
%tZ | Time zone abbreviation, Eg: IST, UTC |
%tz | Time zone offset from GMT, Eg: +0530 |
Java String format example with Date-Time
In the below example, we can see how we can retrieve any part of the date or time using the format() method.
import java.util.Calendar; public class Democlass { public static void main(String[] args) { formatDateTimeString(); } public static void formatDateTimeString() { System.out.println("Output of %tA is " + String.format("%tA", Calendar.getInstance())); System.out.println("Output of %ta is " + String.format("%ta", Calendar.getInstance())); System.out.println("Output of %tB is " + String.format("%tB", Calendar.getInstance())); System.out.println("Output of %tb is " + String.format("%tb", Calendar.getInstance())); System.out.println("Output of %tC is " + String.format("%tC", Calendar.getInstance())); System.out.println("Output of %tc is " + String.format("%tc", Calendar.getInstance())); System.out.println("Output of %tD is " + String.format("%tD", Calendar.getInstance())); System.out.println("Output of %td is " + String.format("%td", Calendar.getInstance())); System.out.println("Output of %te is " + String.format("%te", Calendar.getInstance())); System.out.println("Output of %tF is " + String.format("%tF", Calendar.getInstance())); System.out.println("Output of %tH is " + String.format("%tH", Calendar.getInstance())); System.out.println("Output of %th is " + String.format("%th", Calendar.getInstance())); System.out.println("Output of %tI is " + String.format("%tI", Calendar.getInstance())); System.out.println("Output of %tj is " + String.format("%tj", Calendar.getInstance())); System.out.println("Output of %tk is " + String.format("%tk", Calendar.getInstance())); System.out.println("Output of %tl is " + String.format("%tl", Calendar.getInstance())); System.out.println("Output of %tM is " + String.format("%tM", Calendar.getInstance())); System.out.println("Output of %tm is " + String.format("%tm", Calendar.getInstance())); System.out.println("Output of %tN is " + String.format("%tN", Calendar.getInstance())); System.out.println("Output of %tp is " + String.format("%tp", Calendar.getInstance())); System.out.println("Output of %tQ is " + String.format("%tQ", Calendar.getInstance())); System.out.println("Output of %tR is " + String.format("%tR", Calendar.getInstance())); System.out.println("Output of %tr is " + String.format("%tr", Calendar.getInstance())); System.out.println("Output of %tS is " + String.format("%tS", Calendar.getInstance())); System.out.println("Output of %ts is " + String.format("%ts", Calendar.getInstance())); System.out.println("Output of %tT is " + String.format("%tT", Calendar.getInstance())); System.out.println("Output of %tY is " + String.format("%tY", Calendar.getInstance())); System.out.println("Output of %ty is " + String.format("%ty", Calendar.getInstance())); System.out.println("Output of %tZ is " + String.format("%tZ", Calendar.getInstance())); System.out.println("Output of %tz is " + String.format("%tz", Calendar.getInstance())); } }
Output: Output of %tA is Sunday Output of %ta is Sun Output of %tB is May Output of %tb is May Output of %tC is 20 Output of %tc is Sun May 24 09:40:28 IST 2020 Output of %tD is 05/24/20 Output of %td is 24 Output of %te is 24 Output of %tF is 2020-05-24 Output of %tH is 09 Output of %th is May Output of %tI is 09 Output of %tj is 145 Output of %tk is 9 Output of %tl is 9 Output of %tM is 40 Output of %tm is 05 Output of %tN is 650000000 Output of %tp is am Output of %tQ is 1590293428650 Output of %tR is 09:40 Output of %tr is 09:40:28 AM Output of %tS is 28 Output of %ts is 1590293428 Output of %tT is 09:40:28 Output of %tY is 2020 Output of %ty is 20 Output of %tZ is IST Output of %tz is +0530
Argument Index
We can specify the argument index in the String format method for formatting by mentioning between “%” and “$”. The index always starts at 1.
In the below example, the 1st statement prints “Java” 2 times since we are passing the argument index as 1 twice. The 2nd statement prints only the 2nd string which we have passed since the argument index is 2.
Java String format example with an argument index
public class Democlass { public static void main(String[] args) { String str1 = "Java"; String str2 = "Tutorial"; System.out.println(String.format("%1$s %1$s %2$s" , str1,str2)); System.out.println(String.format("%2$s", "Hello","world")); } }
Output: Java Java Tutorial world
Alignment and Padding
We can also use the format() method for left/right alignment and padding the string with 0s.
Formatting integers
We can specify the width/length of a required integer by including space, left align, or right-align an integer, specifying the width of an integer by filling with 0s. The below example illustrates all these formatting types.
public class Democlass { public static void main(String[] args) { System.out.println(String.format("%d", 100)); //Integer System.out.println(String.format("[%5d]", 100)); //Right aligning-Prefixing 2 spaces to get length of integer as 5 System.out.println(String.format("[%-5d]", 100)); //Left aligning integer of length 5 by suffixing 2 spaces System.out.println(String.format("[% d]", 100)); //space before an integer System.out.println(String.format("[%05d]", 100)); //Prefixing 2 0s to get length of integer as 5 } }
Output: 100 [ 100] [100 ] [ 100] [00100]
Formatting string
We can also format string based on left/right alignment using String format() method. The below example illustrates aligning strings
public class Democlass { public static void main(String[] args) { System.out.println(String.format("%s", "Java")); //String System.out.println(String.format("[%10s]", "Java")); //Right aligning - Prefixing 6 spaces to get string length as 10 System.out.println(String.format("[%-10s]", "Java"));//Left aligning string of length 10 by suffixing 6 spaces System.out.println(String.format("[%.4s]", "Java language"));//Retrieve string based on maximum number of characters specified } }
Output: Java [ Java] [Java ] [Java]
Locale specific Formatting
We can format an integer value based on a specific locale using the Java String format method. Based on the locale, the format() method formats the numeric value.
import java.util.Locale; public class Democlass { public static void main(String[] args) { System.out.println(String.format(Locale.US,"%,d", 1000000)); System.out.println(String.format(Locale.FRENCH, "%,d",1000000)); System.out.println(String.format(Locale.GERMAN, "%,d",1000000)); } }
1,000,000 1?000?000 1.000.000
Conclusion
This tutorial provides in detail all the available formatting methods available in the String class along with examples.