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 in addition they present the content material in a specified sequence. As an example, when displaying massive integers like 100000000, you could wish to embody commas in order that it seems as 100,000,000. Equally with decimal numbers, you would possibly wish to present a particular variety of decimal locations like 199.53 together with rounding. Programmers shall be blissful to know that Java affords a couple of formatting strategies with ample help for a wide range of information sorts like Double, Integer, and Date.
There are three main methods to format a string in Java. You should use the String.format() methodology, the printf() methodology, or the MessageFormat class for formatting strings. Of those, the String.format() methodology is essentially the most generally used, so we shall be masking it on this Java programming tutorial. We are going to 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, be sure you go to: Java Output Fundamentals.
String.format() Methodology Syntax in Java
Java’s String.format() is a static methodology 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. Nonetheless, whether it is null the localization just isn’t 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 differ and could also be omitted fully.
Right here is an instance of learn how to use String.format() in Java:
class StringFormatExample { public static void fundamental(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 in accordance with the foundations 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 fundamental(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 have to be conscious that the String.format() methodology throws a few exceptions:
- NullPointerException: This exception is thrown if the String argument handed is null.
- IllegalFormatException: If the format specified is against the law or there are inadequate arguments.
Builders virtually by no means catch these exceptions, as they have a tendency to point improper use of the tactic somewhat than some type of anticipated runtime exception.
Learn: Java Instruments to Enhance Productiveness
Formatting String Width, Alignment, and Padding in Java
The String.format() methodology additionally permits programmers to set the width, alignment, and padding of the formatted String. The next class incorporates examples of every, in addition to numerous mixtures:
public class StringFormatWidthAndPaddingExample { public static void fundamental(String[] args) Hello Rob }
Specifying Varieties with String.Format()
As we noticed within the locale argument instance above, String.format() will also be used to transform and format different information sorts right into a string. To try this, Java supplies a wide range of Format Specifiers. These start with a % character (%) and terminate with a typechar “kind character“, which signifies the kind of information (int, float, and so forth.) that shall be transformed, in addition to the way in which by which the information shall be represented (decimal, hexadecimal, and so forth.) The total syntax of a Format Specifier in Java is:
% [flags] [width] [.precision] [argsize] typechar
We will see in this system beneath how numerous Format Specifiers have an effect on the airing of knowledge:
import java.util.Date; public class StringFormatTypesExample { public static void fundamental(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 complete checklist of Format Specifiers for the String.format() methodology:
- %% – 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
Notice that some specifiers could also be both lowercase or uppercase. The case of the specifier dictates the case of the formatted letters. Apart from that, the conversion carried out is identical, no matter case.
Learn: Methods 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 substitute() 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 fundamental(String[] args) { String product = "Bread"; double value = 4.99; String str = String.format("The value of %2$s is CAD $%1$.2f right this moment.", value, product); // The value of Bread is CAD $4.99 right this 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() methodology is essentially the most generally used as a result of its super versatility. From localization, kind conversion, width, alignment and padding, it’s got you coated!
Learn extra Java programming tutorials and software program growth guides.