Last updated on November 28th, 2025 at 12:25 pm
The string class in Java is one of the most important parts of the Java language because it helps you work with text reliably. Whether you print a message, take user input, process data, or build real applications, Strings are used everywhere in Java programming.
- What is the String class in Java?
- Why Strings are important
- How the String in Java works internally
- Features of the Java String class
- How to Create a String in Java
- Common String Methods in Java
- String Concatenation in Java
- String Comparison in Java
- Regular Expressions with Java String
- String Pool in Java
- Immutable String in Java
- String vs StringBuffer vs StringBuilder
- Java String Examples for Practice
- What's Next
What is the String class in Java?
The String class is a built-in Java class used to store and manage a sequence of characters. It is part of the java.lang package, which means you can use it without importing anything. A String stores text like words, sentences, email addresses, usernames, and many other forms of data that appear in real applications.
Why Strings are important
Strings are important because almost every Java program depends on text handling. You use Strings for logging, network communication, database queries, file operations, browser automation, user messages, and more. They make text processing simple and allow developers to perform common tasks like searching, comparing, splitting, and formatting information with ease.
How the String in Java works internally
Internally, Java stores String objects in a special memory area known as the String pool. This helps Java reuse existing String objects when possible, which improves performance and saves memory. Strings in Java are also immutable by design. Immutability means that once a String is created, its value cannot be changed. When you modify a String, Java actually creates a new object behind the scenes. This design improves security, thread safety, and memory efficiency when handling repeated text.
Features of the Java String class
The Java String class offers several powerful features that make text handling simple, safe, and efficient. These features are the reason why Strings are used in almost every Java application, from basic programs to large enterprise systems.
Immutable String in Java
One of the most important features is immutability. A String in Java cannot be changed after it is created. If you try to modify a String, Java actually creates a new object in the background.
Immutability brings many benefits, such as better security, safe usage across threads, and consistent performance when the same text appears multiple times in a program.
Memory management and the String pool in Java
Java uses a special memory region called the String pool. When you create a String literal, Java checks the pool to see if the same text already exists. If it does, Java reuses that object instead of creating a new one.
This reduces memory usage and improves performance. The combination of immutability and pooling makes String handling very efficient.
Advantages of immutability
Immutability provides several advantages:
- It prevents accidental changes to important text data.
- It makes your code thread-safe without extra effort.
- It ensures Strings behave predictably in every program.
- It allows Java to optimize memory through pooling and reuse.
These benefits are especially important when working with user input, passwords, URLs, or any data that must remain unchanged.
Security benefits
The design of the String class offers strong security benefits. Since a String cannot be modified, sensitive values like connection URLs, usernames, and configuration keys stay protected from unwanted changes.
This is one of the reasons Java uses Strings for many internal operations, such as class loading, file paths, and network protocols.
How to Create a String in Java
You can create a String in Java in several ways. Each approach has its own use case, and understanding them will help you write cleaner and more efficient programs. The most common methods are using string literals, the new keyword, and helper classes like StringBuilder or StringBuffer.
Using string literals
The simplest way to create a String is by using a string literal. A literal is text written inside double quotes.
String name = "Java String";When you create a String like this, Java stores it in the String pool. If the same text already exists, Java will reuse the existing object. This method is recommended in most situations because it is memory efficient.
Using the new keyword
You can also create a String by using the new keyword.
String city = new String("Mumbai");This always creates a new object, even if the same text exists in the pool. This method is used rarely because it bypasses pooling, but it helps when you intentionally want a new object or when working with external data.
Using StringBuilder and StringBuffer
When you need to build or modify text many times, using StringBuilder or StringBuffer is a better choice.
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World");
String result = sb.toString();StringBuilder is faster and used in most cases.
StringBuffer is slower but thread-safe, so it is used when working with multiple threads.
These classes allow you to modify text without creating multiple String objects.
Common String Methods in Java
The String class provides many built-in methods that help you read, modify, and compare text easily. These methods are used in almost every Java project, so understanding them will make your coding more effective. Below are some of the most commonly used methods, along with simple examples.
charAt, length, substring
charAt()
Returns the character at a specific index.
String word = "Java";
char ch = word.charAt(1);
System.out.println(ch); // Output: alength()
Returns the total number of characters.
String text = "Hello";
int size = text.length();
System.out.println(size); // Output: 5substring()
Extracts a part of the String.
String value = "Playwright";
String sub = value.substring(0, 4);
System.out.println(sub); // Output: Playequals and equalsIgnoreCase
equals()
Checks if two Strings have the same value.
String a = "Java";
String b = "java";
System.out.println(a.equals(b)); // Output: falseequalsIgnoreCase()
Ignores the case while comparing.
System.out.println(a.equalsIgnoreCase(b)); // Output: truecompareTo, contains, startsWith, endsWith
compareTo()
Used for alphabetical comparison.
String a = "apple";
String b = "banana";
System.out.println(a.compareTo(b)); // Output: negative valuecontains()
Checks if a String contains a specific sequence.
String text = "Learn Java fast";
System.out.println(text.contains("Java")); // Output: truestartsWith() and endsWith()
String url = "https://test.com";
System.out.println(url.startsWith("https")); // true
System.out.println(url.endsWith(".com")); // truetrim, replace, split
trim()
Removes leading and trailing spaces.
String data = " hello ";
System.out.println(data.trim()); // Output: helloreplace()
Replaces characters or words.
String msg = "Java is fun";
System.out.println(msg.replace("fun", "simple"));split()
Breaks a String into pieces based on a separator.
String line = "Red,Green,Blue";
String[] colors = line.split(",");Code examples for each method
Here is a combined example showing multiple methods together.
String input = "Welcome to Java";
// length
System.out.println(input.length());
// substring
System.out.println(input.substring(0, 7));
// contains
System.out.println(input.contains("Java"));
// replace
System.out.println(input.replace("Java", "Coding"));These methods make text processing simple and give you complete control over how Strings behave in your program.
String Concatenation in Java
String concatenation in Java means joining two or more Strings to form a new one. Since Strings are immutable, Java creates a new object each time you combine them. There are several ways to concatenate Strings, and choosing the right method helps improve performance and clarity in your programs.
Using the + operator
The + operator is the most common and easiest way to join Strings.
String first = "Hello";
String second = "Java";
String result = first + " " + second;
System.out.println(result); // Output: Hello JavaThis method is simple and works well when you have only a few values to combine.
Using the concat method
Java also provides the concat method for joining Strings.
String a = "Playwright";
String b = " Tutorial";
String c = a.concat(b);
System.out.println(c); // Output: Playwright TutorialThe concat method joins only non-null Strings, so it is less commonly used than the + operator.
Using StringBuilder and StringBuffer
For repeated or heavy modifications, StringBuilder and StringBuffer are better choices.
StringBuilder example
StringBuilder sb = new StringBuilder();
sb.append("Java");
sb.append(" String");
sb.append(" Guide");
String finalText = sb.toString();
System.out.println(finalText);When to use which
- StringBuilder: Faster and used in single-threaded situations.
- StringBuffer: Thread-safe and used when multiple threads may modify the same text.
These classes avoid creating multiple immutable String objects and improve performance.
Performance comparison and best practice
- Use the + operator for small, simple concatenations.
- For loops or repeated appends, always use StringBuilder.
- Avoid mixing too many + operations inside loops because it creates unnecessary objects.
Example of poor performance:
String s = "";
for (int i = 0; i < 5; i++) {
s = s + i; // Creates a new object each time
}Better approach:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(i);
}
String result = sb.toString();This approach is faster, cleaner, and recommended for large text operations.
String Comparison in Java
String comparison in Java is an important part of text processing. You often need to check if two Strings are equal, compare them alphabetically, or verify a specific part of the text. Java provides several built-in methods that make these comparisons simple and accurate.
equals vs equalsIgnoreCase
equals()
The equals method checks if two Strings contain the same characters in the same order.
String a = "Java";
String b = "Java";
System.out.println(a.equals(b)); // Output: trueequalsIgnoreCase()
This method ignores differences between uppercase and lowercase letters.
String a = "Java";
String b = "java";
System.out.println(a.equalsIgnoreCase(b)); // Output: trueUse equals when you need an exact match.
Use equalsIgnoreCase when the letter case should not matter.
compareTo and compareToIgnoreCase
compareTo()
This method compares Strings alphabetically based on Unicode values.
String x = "apple";
String y = "banana";
System.out.println(x.compareTo(y)); // Negative value because apple < bananacompareToIgnoreCase()
Similar to compareTo, but ignores case differences.
System.out.println("Java".compareToIgnoreCase("java")); // Output: 0Zero means both Strings are equal alphabetically.
Using contains, startsWith, and endsWith
These methods help in checking partial matches or validating text.
contains()
Checks if the text is present in the String.
String text = "Learn Java programming";
System.out.println(text.contains("Java")); // truestartsWith()
Checks if the String starts with a specific prefix.
System.out.println(text.startsWith("Learn")); // trueendsWith()
Checks if the String ends with a specific suffix.
System.out.println(text.endsWith("ming")); // trueBest practices for comparison
- Do not use the == operator for comparing Strings.
- Always use equals or equalsIgnoreCase for value comparison.
- Use compareTo when sorting or ordering Strings.
- Use contains, startsWith, and endsWith for partial matching.
- Use trim before comparing user input to avoid space issues.
Example:
String input = " Java ";
if (input.trim().equals("Java")) {
System.out.println("Matched");
}This ensures a reliable and accurate comparison.
Regular Expressions with Java String
Regular expressions help you search, validate, and match patterns inside a String. They are very useful when working with email validation, phone numbers, passwords, and text extraction. Java provides built-in support for regex through the String class and the java.util.regex package.
What are regular expressions
A regular expression is a pattern used to match specific combinations of characters. It allows you to check if a String follows a rule, such as:
- Does it contain only numbers
- Does it match an email format
- Does it start with a capital letter
- Does it include a specific pattern
Regex makes it easy to work with complex text checks.
Using the match method with patterns
The matches method in the String class checks if the entire String matches a regex pattern.
Example: Check if a String contains only digits
String value = "123456";
boolean result = value.matches("[0-9]+");
System.out.println(result); // trueExample: Validate lowercase alphabet
String text = "hello";
System.out.println(text.matches("[a-z]+")); // trueExample: Validate email pattern
String email = "test@example.com";
boolean valid = email.matches("^[A-Za-z0-9+_.-]+@(.+)$");
System.out.println(valid); // trueThe matches method is simple for full pattern validation.
Pattern and Matcher examples
For advanced use cases, Java offers the Pattern and Matcher classes. These allow repeated searches inside the same text.
Find all digits inside a String
import java.util.regex.*;
String data = "Order123ID456";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
System.out.println(matcher.group());
}Output:
123
456Find words starting with capital letters
String line = "Welcome To Java Programming";
Pattern p = Pattern.compile("\\b[A-Z][a-z]+");
Matcher m = p.matcher(line);
while (m.find()) {
System.out.println(m.group());
}Use cases in real-world applications
Regular expressions are used in many practical situations:
- Validate email or phone numbers
- Check password strength
- Extract numbers from logs
- Find specific words in text
- Clean or transform input data
- Validate user registration forms
- Parse search keywords
Regex gives Java developers powerful tools for pattern matching and data validation inside Strings.
String Pool in Java
The String pool in Java is a special memory area where Java stores String literals. It helps improve performance and reduces memory usage by reusing existing String objects instead of creating new ones. Understanding how the String pool works is important for writing efficient Java programs.
What is the String pool
The String pool is a reserved part of the heap memory where Java keeps one copy of each unique String literal. When you create a String using a literal, Java checks the pool:
- If the literal already exists, Java reuses that object.
- If it does not exist, Java adds a new one to the pool.
Example:
String a = "Java";
String b = "Java";
System.out.println(a == b); // trueBoth variables point to the same object because of pooling.
How strings are stored in the pool
When you write a String literal in your code, the compiler places it into the pool automatically. This ensures that common Strings like names, messages, and error codes do not waste memory by creating duplicates.
The important point is that the pool works only for literals, not for Strings created with the new keyword.
Example:
String x = new String("Java");
String y = "Java";
System.out.println(x == y); // falsex creates a separate object outside the pool.
The intern method
Java provides the intern method to manually move or reference a String in the pool.
String temp = new String("Hello");
String pooled = temp.intern();
String literal = "Hello";
System.out.println(pooled == literal); // trueThe intern method ensures that the String refers to the pooled version.
Benefits of the String pool
The String pool offers several advantages:
- Saves memory by avoiding duplicate String objects.
- Improves performance when the same Strings are used frequently.
- Works well with immutable Strings since they cannot be changed.
- Makes String access faster due to object reuse.
This is one of the key reasons why Strings are designed to be immutable in Java.
Immutable String in Java
An immutable String in Java means that once a String object is created, its value cannot be changed. This is one of the most important features of the Java String class and it directly affects performance, security, and memory management in Java programs.
Why immutability matters
Immutability keeps text data safe and predictable. When a String cannot change, Java can reuse the same object in multiple places without any risk of accidental modification. This is especially useful when dealing with user input, passwords, URLs, or configuration keys.
Example:
String a = "Java";
a.concat(" Guide");
System.out.println(a); // Output: JavaThe value of a does not change. Java creates a new object for the modified text.
How immutability affects performance and memory
Immutability supports many internal Java optimizations.
Helps with String pool usage
Since a String cannot be changed, Java can safely store and reuse it in the String pool. This reduces memory usage and avoids unnecessary object creation.
Better performance for repeated text
Common values like error messages, keywords, and usernames can be shared across different parts of a program.
Safe for multi-threaded environments
Because Strings cannot be modified, multiple threads can read the same String without worrying about conflicts or locks.
Advantages of Immutable Strings
The main advantages include:
- Improved security and safer handling of sensitive data
- Easy sharing of objects through the String pool
- Predictable behavior in all Java programs
- Better performance in multi-thread scenarios
- Reduced the chances of bugs caused by unexpected changes
These benefits make immutable Strings one of the core strengths of Java.
String vs StringBuffer vs StringBuilder
Java provides three main classes to work with text: String, StringBuffer, and StringBuilder. Choosing the right one depends on whether you need immutability, performance, or thread safety. Understanding the differences helps you write efficient and reliable code.
String
- Immutable: Once created, a String cannot be changed.
- Stored in String pool: Java can reuse objects and save memory.
- Use case: Best for fixed text or when text does not change frequently.
Example:
String text = "Hello";
text.concat(" Java");
System.out.println(text); // Output: HelloEven after concatenation, the original String remains unchanged.
StringBuffer
- Mutable: Can be changed without creating a new object.
- Thread safe: Methods are synchronized, safe to use in multi-thread programs.
- Use case: Ideal for multi-thread environments when text changes frequently.
Example:
StringBuffer sb = new StringBuffer("Hello");
sb.append(" Java");
System.out.println(sb); // Output: Hello JavaStringBuilder
- Mutable: Like StringBuffer, can be changed without creating new objects.
- Not thread safe: Faster than StringBuffer because it is not synchronized.
- Use case: Best for single-threaded programs with heavy text modifications.
Example:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" Java");
System.out.println(sb); // Output: Hello JavaWhen to use which
- Use String when text rarely changes or for keys, constants, and fixed messages.
- Use StringBuffer in multi-thread applications where text changes frequently.
- Use StringBuilder for faster text manipulation in single-thread programs.
Choosing the right class ensures better performance and efficient memory usage in your Java programs.
Here is Section 11: Java String Examples for Practice, written in a clear, SEO friendly, beginner friendly style with natural keyword usage and no em dash.
Java String Examples for Practice
Practicing with real examples is the best way to understand how the String class in Java works. Below are examples ranging from basic to intermediate level that demonstrate common String operations.
Basic Level Examples
Create and print a String
String name = "Aravind";
System.out.println("Name: " + name);Find the length of a String
String message = "Hello Java";
System.out.println("Length: " + message.length());Get a character at a specific index
char ch = message.charAt(0);
System.out.println("First character: " + ch);Intermediate Level Examples
Substring and concatenation
String text = "Java Programming";
String part = text.substring(0, 4); // Java
String combined = part + " Guide";
System.out.println(combined);String comparison
String a = "Hello";
String b = "hello";
System.out.println(a.equals(b)); // false
System.out.println(a.equalsIgnoreCase(b)); // trueReplacing characters
String data = "Java is fun";
String updated = data.replace("fun", "easy");
System.out.println(updated); // Java is easyString manipulation tasks
Split a String
String colors = "Red,Green,Blue";
String[] arr = colors.split(",");
for(String color : arr) {
System.out.println(color);
}Trim extra spaces
String input = " Java Tutorial ";
System.out.println(input.trim()); // Java TutorialCheck if a String contains a word
String sentence = "Learn Java programming";
System.out.println(sentence.contains("Java")); // trueInterview Level Examples
Reverse a String
String str = "Java";
String reversed = new StringBuilder(str).reverse().toString();
System.out.println(reversed); // avaJCount occurrences of a character
String text = "programming";
char target = 'g';
int count = 0;
for(char c : text.toCharArray()) {
if(c == target) count++;
}
System.out.println("Count of g: " + count); // 2Check palindrome
String str = "madam";
String rev = new StringBuilder(str).reverse().toString();
if(str.equals(rev)) {
System.out.println(str + " is a palindrome");
}These examples cover the most common String operations and help beginners get comfortable with String methods in Java.
What’s Next
If you are comfortable with Java’s String class now and want to learn how to add decision‑making logic to your programs, you should check out our guide on conditional statements. Start with the tutorial on If Else Statement – Basic Java Tutorial to get a solid understanding of
if,else if, andelseusage in Java.
20 thoughts on “String Class in Java Made Easy for New Learners”
Nice Article sir.
Nice posts, but i think a next and prev button to switch among the tutorials would have been more helpful for readers
Great Article, extremely helpful for newbies like myself
It would be more helpful if you post the output for the above mentioned program.
st1 equals to st2? -> false
Concatenation of st1 and st2 Is -> This World is Very Nice And Beautiful.
Character at Index 9 Is -> d
Length Of St1 -> 23
String In Lowercase -> this world is very nice
String In uppercase -> THIS WORLD IS VERY NICE
Index of 1st charater i Is -> 2
Index of 2nd charater i Is -> 11
Index of word Very Is -> 14
Value Of string val2 Is -> 75
Value Of int i Is -> 50
Retrieving sub string from string -> World is
String Part 1 Is -> This World is
String Part 2 Is -> Nice
Trimmed st2 -> And Beautiful.
Good one
In the split function I can not see word very in the out put ?!
I can not see the word very in the output from the split function !
I have my code as follows
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
driver.manage().window().maximize();
//Thread.sleep(20000);
driver.switchTo().frame("EntryFrame");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
String TotalbalanceSTR=driver.findElement(leaveRequestPage.txtannual).getText();
int TotalbalanceINT=Integer.parseInt(TotalbalanceSTR);
System.out.println("Value of total balance->"+TotalbalanceINT);
report.updateTestLog("Verify bank is updated correctly", "Leave bank updated successfully", Status.PASS);
–> first line is like am switching from parent window to child window and waiting to get load for elements
–>then i have derived a string and stored into a variable and converted to integer
–>but system output is not printing the integer and got error as @For input string: "150.00"@
I think your value is double not integer so you need to convert it in double as bellow
double Totalbalanced = Double.parseDouble(TotalbalanceSTR);
Thanks Aravind. But i have a question, while switching from parent to child window, to load the "String TotalbalanceSTR" value it takes around 20 sec (depends on the performance of application).
Before loading the value my code is executing and printing the value as "empty String" . How can i handle this?
i have used implicitWait if u see my code but i guess it wont work
Hi Meghasri,
Have you tried with Explicit Wait like below example
ex:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("searchInput"
????
The article is good, please add the links to Next and Previous tutors please.
thank you very much to me that I am a beginner this is cool
Content can not be any better than this..Thanks a lot 🙂
So usefull.Thank you
Post is very useful and depth but need to display output as per define code. So, beginner level person can understand easily.
Length Of St1 -> 22
Please post along with the output
"character" written without second "c" )