Course Curriculum

How to Initialize and Compare Strings in Java?

How to Initialize and Compare Strings in Java?

Initializing Strings in Java

1. Direct Initialization(String Constant) : In this method, a String constant object will be created in String pooled area which is inside heap area in memory. As it is a constant, we can’t modify it, i.e. String class is immutable.
Examples:

String str = "PrutordotAi";

str = "prutor"; // This statement will make str
// point to new String constant("prutor")
// rather than modifying the previous
// String constant.

String str = “PrutordotAi”;

as

str = “prutor”;

as

Note: If we again write str = “PrutordotAi” as next line, then it first check that if given String constant is present in String pooled area or not. If it present then str will point to it, otherwise creates a new String constant.

2. Object Initialization (Dynamic): In this method, a String object will be created in heap area (not inside String pooled area as in upper case). We can’t modify it(like in upper case). Also with same value, a String constant is also created in String pooled area, but the variable will point to String object in heap area only.
Examples:

String str = new String("very");
str = "good";

String str = new String(“very”)

as

str = “good”
Now this is a direct assignment, so String constant with value “good” is created in String pooled area and str will point to that.

as

Note: If we again write str = new String(“very”), then it will create a new object with value “very”, rather than pointing to the available objects in heap area with same value.But if we write str = “very”, then it will point to String constant object with value “very”, present in String pooled area.

Comparing Strings and their References

1. equals() method: It compares values of string for equality. Return type is boolean. In almost all the situation you can use useObjects.equals().
2. == operator: It compares references not values. Return type is boolean. == is used in rare situations where you know you’re dealing with interned strings.
3. compareTo() method: It compares values lexicographically and returns an integer value that describes if first string is less than, equal to or greater than second string.For example, if str1 and str2 are two string variables then if
str1 == str2 : return 0
str1 > str2 : return a positive value
str1 < str2 : return a negative value
Note: The positive and negative values returned by compareTo method is the difference of first unmatched character in the two strings.

// Java program to show how to compare Strings

public class Test {
public static void main(String[] args)
{
String s1 = "Ram";
String s2 = "Ram";
String s3 = new String("Ram");
String s4 = new String("Ram");
String s5 = "Shyam";
String nulls1 = null;
String nulls2 = null;

System.out.println(" Comparing strings with equals:");
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.equals(s5));
// System.out.println(nulls1.equals(nulls2)); // NullPointerException

System.out.println(" Comparing strings with ==:");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println(nulls1 == nulls2);

System.out.println(" Comparing strings with compareto:");
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareTo(s5));
// System.out.println(nulls1.compareTo(nulls2)); // NullPointerException
}
}
Output:
Comparing strings with equals:
true
true
false
Comparing strings with ==:
true
false
false
true
Comparing strings with compareto:
0
-1

(Next Lesson) How to start learning Java