Languages
[Edit]
EN

Java - how to compare strings?

3 points
Created by:
Kate_C
19790

One of the most common problem that affects new Java Developers is how to compare two String objects. They try to compare strings with == operator what makes only reference comparision - not values. To solve this problem equals method should be used. This article explains how to compare two strings.

1. String.equals method example

public class Program {

    public static void main(String[] args) {

        String a = "text 1";
        String b = "text 1";
        String c = "text 2";

        // CORRECT WAY OF VALUES COMPARISON:

        System.out.println(a.equals(b)); // true
        System.out.println(a.equals(c)); // false

        // good practice because of literal on left site
        // NullPoiterException will not occur if a or c variables will be null
        System.out.println("text 1".equals(a)); // true
        System.out.println("text 1".equals(c)); // false
        
        System.out.println("text 1".equals("text 1")); // true
        System.out.println("text 2".equals("text 1")); // false

        // BAD PRACTICE BECAUSE OF VARIABLE ON LEFT SITE AND LITERAL ON RIGHT SITE:
        
        // possible NullPoiterException if a or c variable will be null
        System.out.println(a.equals("text 1")); // true 
        System.out.println(c.equals("text 1")); // false
    }
}

Note: this approach is available sice java 1.7.

Output:

true
false
true
false
true
false
true
false

2. Object.equals method example

import java.util.Objects;

public class Program {

    public static void main(String[] args) {

        String a = "text 1";
        String b = "text 1";
        String c = "text 2";

        System.out.println(Objects.equals(a, b)); // true
        System.out.println(Objects.equals(a, c)); // false
        System.out.println(Objects.equals(b, a)); // true
        System.out.println(Objects.equals(c, a)); // false

        System.out.println(Objects.equals(a, "text 1")); // true
        System.out.println(Objects.equals("text 1", b)); // true

        System.out.println(Objects.equals("text 1", "text 1")); // true
        System.out.println(Objects.equals("text 1", "text 2")); // false
    }
}

Output:

true
false
true
false
true
true
true
false

3. How to do not compare strings in Java

public class Program {

    public static void main(String[] args) {

        String a = "text 1";
        String b = "text 1";
        String c = "text 2";

        // INCORRECT WAY OF VALUES COMPARISON:
        
        // this examples return true because of reference to same object in memory
        System.out.println(a == b); // true
        System.out.println("text 1" == "text 1"); // true
    }
}

Output:

true
true

Note: for all "text 1" occurrences java uses same object in memory what caused true result during references comparison with == operator.

Native Advertising
50 000 ad impressions - 449$
🚀
Get your tech brand or product in front of software developers.
For more information contact us:
Red dot
Dirask - friendly IT community for everyone.

❤️💻 🙂

Join