The String class provides several methods for comparing strings. When a comparison is made between strings, the compiler compares the numbers of the objects, because each letter is represented by a number.
Comparisons with the equality operator (==) are used to compare values of primitive types; the result is true if both values are identical. If references are compared with the equal sign (==), the result is true if the two references indicate the same object in memory.
At other hand, .equals () is a method of the Object class, which compares the values of the literals stored by objects, so this method should be used to compare the literal values of type String variables.
Below some examples of comparisons looking for an exact match:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// These two have the same value new String("test").equals("test") // Returns true //... but they are not the same object new String ( "test") == "test" // Returns false //... Neither are these new String("test") == new String("test") // Returns false //... But these are because literals are interned by // the compiler and thus refer to the same object "test" == "test" // Returns true //... But you shouldnt really just call Objects.equals () Objects.equals("test",new String("test")) // Returns true Objects.equals(null,"test") // Returns false |
Other forms of comparison
Going a bit beyond the exact comparison of Strings, we have other interesting forms of comparison:
Case insensitive
1 2 |
System.out.println("STR".equalsIgnoreCase("str")); //Returns true |
A string that is contained in another
1 2 |
System.out.println("STR ### ###"contains("STR").); // Returns true |
Which string is “bigger” than the other?
1 2 3 4 5 |
System.out.println ("str1".compareTo("str2")); //Returns -1 because "str1" is smaller "str2" or System.out.println("str1".compareToIgnoreCase("STR2")); //Returns -1, Ignoring the capitalization |
1 if the first String is bigger than the second
0 if they are equal
-1 if the first String is smaller than the second
Starts with
1 2 |
System.out.println("str1".startsWith("str")); //Returns true, because "str1" begins with "str" |
Ends with
1 2 |
System.out.println("str1".endsWith("r1")); // Returns true because "str1" ends with "r1" |
If you want to explore more, visit our Java edu & tutorials section! Below are some examples:
You can also follow some of the broadcasters who program in Java, like the ones below:
Another cool way to find out interesting things about Java is to access our project page!