Introduction
If there is one class used in every Java application, it is undoubtedly String.
Whether you’re building:
- REST APIs
- Spring Boot applications
- Banking platforms
- Payment gateways
- ETL applications
- Configuration services
- Logging frameworks
you work with strings every day.
Before Java 11, developers frequently wrote helper methods for common operations such as:
- Checking for blank strings
- Removing whitespace
- Repeating text
- Reading lines
- Formatting multi-line content
These tasks usually required custom utility methods or third-party libraries like Apache Commons Lang.
Java 11 simplified many of these common operations by introducing several new methods directly into the String class.
Although individually small, these methods improve readability, reduce boilerplate, and eliminate many utility classes.
Learning Objectives
By the end of this article, you will be able to:
- Understand every new String method introduced in Java 11.
- Learn the difference between
trim()andstrip(). - Validate blank input correctly.
- Process multi-line text efficiently.
- Generate repeated strings.
- Apply these methods in enterprise applications.
- Replace legacy utility code with modern Java APIs.
Before Java 11
Checking if a string was blank usually looked like this:
if (name == null || name.trim().isEmpty()) {
throw new ValidationException();
}
Developers repeated this pattern throughout their applications.
Similarly, repeating text required loops.
Reading lines required:
BufferedReader
or
split("\n")
Java 11 addressed these common problems directly.
isBlank()
Before Java 11
if (text.trim().isEmpty()) {
...
}
Problems:
- Requires
trim(). - Creates an intermediate string.
- Less readable.
Java 11
if (text.isBlank()) {
...
}
Much clearer.
What Does isBlank() Check?
Returns true if the string contains:
- Empty string
- Spaces
- Tabs
- New lines
- Unicode whitespace
Examples:
"".isBlank();
Returns:
true
" ".isBlank();
Returns:
true
"\n\t".isBlank();
Returns:
true
"Java".isBlank();
Returns:
false
Enterprise Use Cases
Input validation.
REST request validation.
CSV processing.
Configuration parsing.
Spring Boot request DTO validation.
strip()
Most developers know:
trim()
But trim() has limitations.
It only removes characters whose value is less than or equal to the ASCII space character.
Java 11 introduced:
strip()
which understands Unicode whitespace.
Example:
String value =
" Java 11 ";
System.out.println(value.strip());
Result:
Java 11
trim() vs strip()
| Feature | trim() | strip() |
|---|---|---|
| ASCII whitespace | ✅ | ✅ |
| Unicode whitespace | ❌ | ✅ |
| Recommended for modern applications | ❌ | ✅ |
For international applications, strip() is generally the better choice.
stripLeading()
Removes only leading whitespace.
String value =
" Enterprise";
System.out.println(value.stripLeading());
Result:
Enterprise
Trailing spaces remain unchanged.
stripTrailing()
Removes only trailing whitespace.
String value =
"Java ";
System.out.println(value.stripTrailing());
Leading whitespace is preserved.
Enterprise Example
Suppose a CSV import preserves indentation intentionally but includes unwanted trailing spaces.
Using:
stripTrailing()
avoids removing meaningful leading whitespace.
lines()
Before Java 11:
String[] lines =
text.split("\n");
Problems:
- Regular expression processing.
- Platform differences.
- Less expressive.
Java 11
text.lines()
.forEach(System.out::println);
Returns a lazy Stream<String>.
Perfect for Stream pipelines.
Enterprise Uses
Reading:
- Configuration files
- SQL scripts
- CSV files
- Log files
- Email templates
repeat()
Before Java 11:
StringBuilder builder =
new StringBuilder();
for(int i=0;i<10;i++){
builder.append("*");
}
Java 11:
"*".repeat(10);
Result:
**********
Enterprise Uses
Generating:
- Report separators
- Console output
- Test data
- Password masking
Example:
"*".repeat(password.length());
Output:
********
indent()
Although officially introduced in Java 12, it is worth mentioning because it complements modern text processing introduced around this period.
We’ll cover it in detail when we discuss Java 12.
Combining String APIs
Example:
text.strip()
.lines()
.filter(line -> !line.isBlank())
.forEach(System.out::println);
Readable.
Functional.
Concise.
Spring Boot Example
Suppose a request contains:
Rahul
Java
Spring
Docker
Processing:
requestBody.lines()
.map(String::strip)
.filter(line -> !line.isBlank())
.toList();
Result:
Rahul
Java
Spring
Docker
Validation Example
Instead of:
if(name == null ||
name.trim().isEmpty()){
...
}
Use:
if(name == null ||
name.isBlank()){
...
}
Simpler.
More expressive.
Logging Example
String separator =
"=".repeat(80);
logger.info(separator);
Performance Considerations
The new String methods are implemented directly in the JDK and are generally more readable than equivalent hand-written utility code.
Performance should rarely be the deciding factor—clarity and correctness are usually more important.
Common Mistakes
Confusing isBlank() with isEmpty()
" ".isEmpty();
Returns:
false
But:
" ".isBlank();
Returns:
true
Continuing to Use trim()
Unless legacy behavior is specifically required, prefer:
strip()
for modern Unicode-aware applications.
Splitting Text Manually
Prefer:
lines()
instead of:
split("\n")
whenever possible.
Best Practices
✔ Use isBlank() for user input validation.
✔ Prefer strip() over trim().
✔ Use lines() when processing multi-line text.
✔ Use repeat() instead of manual loops.
✔ Combine String APIs with Streams for readable processing pipelines.
Interview Questions
What is the difference between isBlank() and isEmpty()?
isEmpty() checks only whether the string length is zero.
isBlank() returns true for empty strings and strings containing only whitespace.
Why is strip() preferred over trim()?
strip() is Unicode-aware, whereas trim() removes only a limited set of ASCII whitespace characters.
What does lines() return?
A lazy Stream<String> containing the lines of the string.
What is the advantage of repeat()?
It replaces manual loops with a simple, expressive API for generating repeated text.
Summary
Java 11’s String enhancements addressed many of the small but repetitive tasks that developers encountered every day. Methods such as isBlank(), strip(), lines(), and repeat() reduce boilerplate, improve readability, and encourage a more expressive programming style.
While these APIs may appear modest compared to larger language features, they have become standard tools in modern Java applications and are used extensively in Spring Boot services, REST APIs, configuration processing, logging, and validation.
Coming Up Next
Part 29 – Java 11 Files API Enhancements – Modern File I/O, Reading, Writing, Paths, and Enterprise File Processing
We’ll explore:
- New
Filesutility methods - Reading and writing strings
- Working with
Path - Efficient file operations
- Secure temporary files
- Directory traversal
- Enterprise file upload and download
- Spring Boot integration
- Large file processing
- Performance and best practices