What are Strings in Java?
In Java, a String is a sequence of characters enclosed within double quotes (” “). Strings are one of the most commonly used data types in Java because they are essential for handling text in applications. In Java, strings are immutable, meaning their content cannot be changed once created. Instead, any modification creates a new string object.
How Strings Work in Java
Java provides the String class to handle strings. The String class is part of the java.lang package and comes with various built-in methods to manipulate and process strings effectively.
Creating Strings in Java
There are two primary ways to create strings in Java:
Using String Literals:
String s1 = "Hello";
Here, the string is stored in the String Pool, a special memory area for string literals.
Using the new
Keyword:
String s2 = new String("Hello");
This creates a new string object in heap memory, even if an identical string exists in the String Pool.
Important Characteristics of Strings
Immutability:
Once created, a string cannot be modified. For example:
String s = "Hello";
s = s.concat(" World"); // Creates a new string "Hello World"
System.out.println(s); // Outputs: Hello World
String Pool:
Java optimizes memory by maintaining a String Pool to store unique string literals. If a string already exists in the pool, a reference to it is returned instead of creating a new object.
Common String Operations
Here are some frequently used string methods with examples:
1. Getting String Length
The length() method returns the number of characters in the string.
Example:
public class StringExample {
public static void main(String[] args) {
String s = "Java Programming";
System.out.println("Length: " + s.length()); // Output: 17
}
}
2. Concatenation
The concat() method or the + operator combines two strings.
Example:
public class StringExample {
public static void main(String[] args) {
String s1 = "Java";
String s2 = "Programming";
String result = s1.concat(" ").concat(s2);
System.out.println(result); // Output: Java Programming
}
}
3. Character Extraction
You can extract a specific character using the charAt() method.
Example:
public class StringExample {
public static void main(String[] args) {
String s = "Java";
System.out.println("Character at index 1: " + s.charAt(1)); // Output: a
}
}
4. Substrings
The substring() method extracts a part of the string.
Example:
public class StringExample {
public static void main(String[] args) {
String s = "Java Programming";
System.out.println("Substring: " + s.substring(5, 16)); // Output: Programming
}
}
5. Case Conversion
- toUpperCase() converts all characters to uppercase.
- toLowerCase() converts all characters to lowercase.
Example:
public class StringExample {
public static void main(String[] args) {
String s = "Java";
System.out.println("Uppercase: " + s.toUpperCase());
System.out.println("Lowercase: " + s.toLowerCase());
}
}
6. Replacing Characters
The replace() method replaces a specific character or sequence of characters.
Example:
public class StringExample {
public static void main(String[] args) {
String s = "Java Programming";
System.out.println("Replaced: " + s.replace("a", "o")); // Output: Jovo Progromming
}
}
7. Checking Equality
The equals() method checks whether two strings are equal.
Example:
public class StringExample {
public static void main(String[] args) {
String s1 = "Java";
String s2 = "java";
System.out.println("Equals: " + s1.equals(s2)); // Output: false
}
}
8. Checking if a String is Empty
The isEmpty() method checks if the string is empty (length is 0).
Example:
public class StringExample {
public static void main(String[] args) {
String s = "";
System.out.println("Is Empty: " + s.isEmpty()); // Output: true
}
}
9. Trimming Whitespaces
The trim() method removes leading and trailing whitespaces.
Example:
public class StringExample {
public static void main(String[] args) {
String s = " Java Programming ";
System.out.println("Trimmed: '" + s.trim() + "'"); // Output: 'Java Programming'
}
}
String vs StringBuilder vs StringBuffer
Feature | String | StringBuilder | StringBuffer |
---|---|---|---|
Mutability | Immutable | Mutable | Mutable |
Thread Safety | Not thread-safe | Not thread-safe | Thread-safe |
Performance | Slower | Faster | Slower than StringBuilder |
Example using StringBuilder
:
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Java");
sb.append(" Programming");
System.out.println(sb.toString()); // Output: Java Programming
}
}
Common Use Cases of Strings
- File paths: Strings are often used to represent file locations.
- User input: Strings handle data entered by users.
- Web development: URLs, JSON and HTML content are typically string-based.
- Data processing: Strings are used to manipulate and analyze text data.