Whereas System.out.println() is okay for debugging and displaying easy messages, it isn’t nice for formatting strings. Formatted strings not solely show the string content material however additionally they present the content material in a specified sequence. As an illustration, when displaying giant integers like 100000000, chances are you’ll wish to embody commas in order that it seems as 100,000,000. Equally with decimal numbers, you would possibly wish to present a selected variety of decimal locations like 199.53 together with rounding. Programmers might be completely satisfied to know that Java affords a number of formatting strategies with ample assist for a wide range of knowledge sorts like Double, Integer, and Date.
There are three main methods to format a string in Java. You should use the String.format() technique, the printf() technique, or the MessageFormat class for formatting strings. Of those, the String.format() technique is essentially the most generally used, so we might be overlaying it on this Java programming tutorial. We’ll get to the opposite two choices in a future article.
When you want a refresher or missed our earlier tutorial on working with strings in Java, you should definitely go to: Java Output Fundamentals.
String.format() Methodology Syntax in Java
Java’s String.format() is a static technique that returns a formatted String utilizing the given locale, format String, and arguments. It is available in two flavors, as follows:
public static String format(String format, Object... args) public static String format(Locale locale, String format, Object... args)
- locale: the locale utilized throughout formatting. Nevertheless, whether it is null the localization will not be utilized.
- format: the String to format.
- args: the parameter referenced by format specifiers within the format String. If the arguments are greater than the format specifiers, the additional arguments are ignored. The variety of arguments can range and could also be omitted fully.
Right here is an instance of use String.format() in Java:
class StringFormatExample { public static void primary(String[] args) { String identify = "Rob Gravelle"; String str = String.format("My identify is %s", identify); System.out.println(str); // My identify is Rob Gravelle } }
The locale argument is very helpful for formatting numbers and dates based on the principles of a given locale. For instance, here’s a locale worth of “France” that replaces the decimal level with a comma, as per the France quantity system:
import java.util.*; class StringFormatLocaleExample { public static void primary(String[] args) { System.out.format( Locale.FRANCE, "The worth of the float " + "variable is %f ", 10.3242342 ); // The worth of the float variable is 10,324234. } }
String.format() Exceptions in Java
You need to be conscious that the String.format() technique throws a few exceptions:
- NullPointerException: This exception is thrown if the String argument handed is null.
- IllegalFormatException: If the format specified is illegitimate or there are inadequate arguments.
Builders nearly by no means catch these exceptions, as they have a tendency to point improper use of the strategy reasonably than some type of anticipated runtime exception.
Learn: Java Instruments to Enhance Productiveness
Formatting String Width, Alignment, and Padding in Java
The String.format() technique additionally permits programmers to set the width, alignment, and padding of the formatted String. The next class accommodates examples of every, in addition to numerous combos:
public class StringFormatWidthAndPaddingExample { public static void primary(String[] args) System.out.println(greeting); // Most variety of characters String.format(" }
Specifying Varieties with String.Format()
As we noticed within the locale argument instance above, String.format() may also be used to transform and format different knowledge sorts right into a string. To do this, Java offers a wide range of Format Specifiers. These start with a p.c character (%) and terminate with a typechar “sort character“, which signifies the kind of knowledge (int, float, and so forth.) that might be transformed, in addition to the best way during which the info might be represented (decimal, hexadecimal, and so forth.) The complete syntax of a Format Specifier in Java is:
% [flags] [width] [.precision] [argsize] typechar
We will see in this system under how numerous Format Specifiers have an effect on the airing of knowledge:
import java.util.Date; public class StringFormatTypesExample { public static void primary(String[] args) { String str1 = String.format("%d", 2112); // Integer worth String str2 = String.format("%f", 98.7); // Float worth String str3 = String.format("%x", 101); // Hexadecimal worth String str4 = String.format("%o", 023); // Octal worth String str5 = String.format("%tc", new Date()); // Date object String str6 = String.format("%c", 'Z'); // Char worth System.out.println(str1); // 2112 System.out.println(str2); // 98.700000 System.out.println(str3); // 65 System.out.println(str4); // 23 System.out.println(str5); // Thu Jan 05 20:52:06 GMT 2023 System.out.println(str6); // Z } }
Right here is the total checklist of Format Specifiers for the String.format() technique:
- %% – Inserts a “%” signal
- %x/%X – Integer hexadecimal
- %t/%T – Time and Date
- %s/%S – String
- %n – Inserts a newline character
- %o – Octal integer
- %f – Decimal floating-point
- %e/%E – Scientific notation
- %g – Causes Formatter to make use of both %f or %e, whichever is shorter
- %h/%H – Hash code of the argument
- %d – Decimal integer
- %c – Character
- %b/%B – Boolean
- %a/%A – Floating-point hexadecimal
Word that some specifiers could also be both lowercase or uppercase. The case of the specifier dictates the case of the formatted letters. Aside from that, the conversion carried out is identical, no matter case.
Learn: The right way to Concatenate Strings in Java
Argument Index and String.format()
Recall from earlier within the tutorial that String.format() can settle for a number of Objects to format. The Argument Index is an integer indicating the place of the argument in that checklist of Objects. To not be confused with the Numbered Teams of the String exchange() operate ($1, $2, and so forth.), Argument Indexes place the quantity BEFORE the greenback signal. Therefore, the primary argument is referenced by 1$, the second by 2$, and so forth. Here’s a program that codecs two items of knowledge: a float and a String:
public class StringFormatArgumentIndexExample { public static void primary(String[] args) { String product = "Bread"; double value = 4.99; String str = String.format("The worth of %2$s is CAD $%1$.2f at the moment.", value, product); // The worth of Bread is CAD $4.99 at the moment. System.out.println(str); } }
Closing Ideas on Formatting Strings in Java
Though there are a number of methods to format a string in Java, the String.format() technique is essentially the most generally used attributable to its super versatility. From localization, sort conversion, width, alignment and padding, it’s got you lined!
Learn extra Java programming tutorials and software program improvement guides.