1. String Formatting in Java
String formatting means creating well-structured and readable text using placeholders and formatted values.
Java provides formatting features through methods like printf() and String.format().
2. Why String Formatting is Used
String formatting helps display data in a clean and professional way.
- a. Improves output readability
- b. Displays aligned data
- c. Controls decimal precision
- d. Formats numbers and text
- e. Creates professional reports
- f. Builds dynamic messages
3. Where String Formatting is Used
String formatting is used in many real-world applications.
- a. Billing systems
- b. Banking applications
- c. Report generation
- d. Console applications
- e. Invoice printing
- f. Logging systems
4. printf() Method
The printf() method prints formatted output directly to the console.
4.1 Basic printf() Example
public class Main {
public static void main(String[] args) {
String name = "Rahul";
int age = 25;
System.out.printf("Name: %s Age: %d", name, age);
}
}
The placeholder %s is used for String values and %d is used for integer values.
printf() does not automatically move to the next line after printing.
5. Understanding Format Specifiers
Format specifiers are special symbols used to insert values into formatted text.
5.1 Common Format Specifiers
| Specifier | Purpose |
| %s | String |
| %d | Integer |
| %f | Floating-point number |
| %c | Character |
| %b | Boolean |
5.2 Example Using Multiple Specifiers
public class Main {
public static void main(String[] args) {
String language = "Java";
int version = 17;
double rating = 4.8;
System.out.printf(
"Language: %s Version: %d Rating: %f",
language,
version,
rating
);
}
}
Different placeholders are used for different data types.
6. Formatting Decimal Numbers
Java allows control over decimal precision using formatting rules.
6.1 Limiting Decimal Places
public class Main {
public static void main(String[] args) {
double price = 99.98765;
System.out.printf("%.2f", price);
}
}
The output becomes 99.99 because only two decimal places are displayed.
6.2 Formatting Percentage Values
public class Main {
public static void main(String[] args) {
double marks = 87.456;
System.out.printf("Percentage: %.1f%%", marks);
}
}
The %% symbol prints the percentage character.
Using incorrect format specifiers may cause IllegalFormatConversionException.
7. Width and Alignment Formatting
Java formatting supports spacing and alignment control.
7.1 Right Alignment
public class Main {
public static void main(String[] args) {
System.out.printf("%10s", "Java");
}
}
The text is displayed using a total width of 10 characters.
7.2 Left Alignment
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s", "Java");
}
}
The minus sign performs left alignment.
8. Using String.format()
The String.format() method returns formatted text as a String instead of printing it directly.
8.1 Basic String.format() Example
public class Main {
public static void main(String[] args) {
String result = String.format(
"Name: %s Age: %d",
"Amit",
30
);
System.out.println(result);
}
}
The formatted text is stored inside a String variable.
8.2 Formatting Currency Values
public class Main {
public static void main(String[] args) {
double amount = 1250.5;
String result = String.format(
"Amount: %.2f",
amount
);
System.out.println(result);
}
}
The amount is displayed with two decimal places.
9. Escape Sequences in Formatting
Escape sequences are special characters used to control formatting behavior.
9.1 Common Escape Sequences
| Escape Sequence | Purpose |
| \n | New line |
| \t | Horizontal tab |
| \" | Double quote |
| \\ | Backslash |
9.2 Example Using New Line
public class Main {
public static void main(String[] args) {
System.out.printf("Java\nProgramming");
}
}
The text Programming appears on the next line.
9.3 Example Using Tab Space
public class Main {
public static void main(String[] args) {
System.out.printf("Name:\tRahul");
}
}
The tab sequence creates horizontal spacing between text.
Escape sequences improve output readability and structure.
10. Advanced Format Specifiers
Java provides advanced formatting controls for numbers and text.
10.1 Displaying Leading Zeros
public class Main {
public static void main(String[] args) {
int number = 25;
System.out.printf("%05d", number);
}
}
The output becomes 00025 because leading zeros are added.
10.2 Formatting Floating-Point Width
public class Main {
public static void main(String[] args) {
double value = 45.6789;
System.out.printf("%10.2f", value);
}
}
The number uses total width 10 with two decimal places.
10.3 Formatting Multiple Lines
public class Main {
public static void main(String[] args) {
System.out.printf(
"Name: %s\nAge: %d\nCity: %s",
"Rahul",
25,
"Delhi"
);
}
}
The output is displayed in multiple structured lines.
11. Date and Time Formatting Basics
Java formatting can also display formatted date and time values.
11.1 Basic Date Formatting Example
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
System.out.printf("%tD", date);
}
}
The %tD specifier formats the date in month/day/year format.
11.2 Time Formatting Example
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date = new Date();
System.out.printf("%tT", date);
}
}
The %tT specifier displays time in hour:minute:second format.
Date formatting specifiers only work with date and time objects.
12. Internal Working of String Formatting
Internally, Java formatting methods process placeholders and replace them with actual values.
12.1 Placeholder Replacement Process
- a. Java scans the format string
- b. Format specifiers are identified
- c. Values are converted into formatted text
- d. Final formatted output is generated
12.2 Example of Internal Formatting
String result = String.format(
"Age: %d",
25
);
Java internally replaces %d with the integer value 25.
13. Performance Behavior of Formatting
Formatting operations involve additional processing compared to normal String concatenation.
13.1 Simple Concatenation
String text = "Age: " + 25;
This approach is simple and usually faster for very small operations.
13.2 Formatted Output
String text = String.format(
"Age: %d",
25
);
Formatting provides better readability and structure but involves more internal processing.
Use formatting when output readability is more important than raw performance.
14. Common Beginner Mistakes
14.1 Using Wrong Format Specifier
Using an incorrect specifier for a data type causes formatting errors.
public class Main {
public static void main(String[] args) {
int number = 10;
System.out.printf("%f", number);
}
}
This code throws IllegalFormatConversionException because %f is used for floating-point values, not integers.
Always match the format specifier with the correct data type.
14.2 Forgetting Escape Characters
public class Main {
public static void main(String[] args) {
System.out.printf("Discount: 20%");
}
}
This code causes formatting issues because % is treated as a format specifier.
public class Main {
public static void main(String[] args) {
System.out.printf("Discount: 20%%");
}
}
Using %% correctly prints the percentage symbol.
14.3 Mismatched Argument Count
public class Main {
public static void main(String[] args) {
System.out.printf(
"Name: %s Age: %d",
"Rahul"
);
}
}
This code throws MissingFormatArgumentException because one required value is missing.
15. Edge Cases in String Formatting
15.1 Formatting Null Values
public class Main {
public static void main(String[] args) {
String name = null;
System.out.printf("%s", name);
}
}
The output becomes null because Java converts the null reference into text format.
15.2 Large Width Values
public class Main {
public static void main(String[] args) {
System.out.printf("%20s", "Java");
}
}
Large width values create extra spacing before the text.
15.3 Precision Greater Than Available Digits
public class Main {
public static void main(String[] args) {
double value = 12.3;
System.out.printf("%.5f", value);
}
}
Extra zeros are added automatically after the decimal point.
16. Best Practices for String Formatting
16.1 Use Readable Formatting
Proper formatting improves output clarity and user experience.
System.out.printf(
"Name: %s\nAge: %d\nSalary: %.2f",
"Rahul",
25,
45000.75
);
Structured formatting makes data easier to read.
16.2 Use String.format() for Reusable Text
String.format() is useful when formatted text must be stored or reused later.
String message = String.format(
"Welcome %s",
"Amit"
);
The formatted result can be reused multiple times.
16.3 Avoid Unnecessary Complex Formatting
Simple concatenation may be enough for very small outputs.
String text = "Age: " + 25;
This approach is simpler when advanced formatting is not needed.
Choose formatting techniques based on readability and project requirements.
17. Important Points to Remember
- a. String formatting improves output readability
- b. printf() prints formatted output directly
- c. String.format() returns formatted text
- d. Format specifiers represent data types
- e. %.2f controls decimal precision
- f. %% prints the percentage symbol
- g. Incorrect specifiers cause formatting exceptions
- h. Escape sequences improve structured output
Java String formatting provides powerful tools for creating clean, professional, and readable output. By understanding format specifiers, alignment rules, precision handling, and formatting methods, developers can generate structured text efficiently for console applications, reports, logs, and real-world business systems.
