String.equals versus == [duplicate]

This code separates a string into tokens and stores them in an array of strings, and then compares a variable with the first home … why isn’t it working?

public static void main(String...aArguments) throws IOException {

    String usuario = "Jorman";
    String password = "14988611";

    String strDatos = "Jorman 14988611";
    StringTokenizer tokens = new StringTokenizer(strDatos, " ");
    int nDatos = tokens.countTokens();
    String[] datos = new String[nDatos];
    int i = 0;

    while (tokens.hasMoreTokens()) {
        String str = tokens.nextToken();
        datos[i] = str;
        i++;
    }

    //System.out.println (usuario);

    if ((datos[0] == usuario)) {
        System.out.println("WORKING");
    }
}

20 s
20

Meet Jorman

Jorman is a successful businessman and has 2 houses.

enter image description here

But others don’t know that.

Is it the same Jorman?

When you ask neighbours from either Madison or Burke streets, this is the only thing they can say:

enter image description here

Using the residence alone, it’s tough to confirm that it’s the same Jorman. Since they’re 2 different addresses, it’s just natural to assume that those are 2 different persons.

That’s how the operator == behaves. So it will say that datos[0]==usuario is false, because it only compares the addresses.

An Investigator to the Rescue

What if we sent an investigator? We know that it’s the same Jorman, but we need to prove it. Our detective will look closely at all physical aspects. With thorough inquiry, the agent will be able to conclude whether it’s the same person or not. Let’s see it happen in Java terms.

Here’s the source code of String’s equals() method:

enter image description here

It compares the Strings character by character, in order to come to a conclusion that they are indeed equal.

That’s how the String equals method behaves. So datos[0].equals(usuario) will return true, because it performs a logical comparison.

Leave a Comment