Why in Java ("string"). Equals (var) recommended except (var) .equals ("string")?

I saw that most developers use the first line after this variable used in the operation .equal. What is the reason?

+4
source share
5 answers

Since var can be null, and var.equals ("string") will throw a NullPointerException (an attempt to call the method on null). On the other hand, "string".equals(null)it will just return false.

+9
source

why in java ("string"). is equals (var) recommended to distinguish from (var) .equals ("string")?

, , var. , NPE, . , , ("string").equals(var) false.

, , var

String var = request.getParameter("myvar");
if(var.equals("myVarValue")) {
//do something
}

NPE, .

+4

, var null, NullPointerException.

+3
public static void badOne() {
    String s = null;
    System.out.println(s.equals("abc"));
    // This function will throw null pointer
}

public static void goodOne() {
    String s = null;
    System.out.println("abc".equals(s));
    // This will print false
}
+3

( "string" ). equals (var), , , var . , var .

:

String makeAString(@NonNull String aStringValue) {
    Validate.notNull(aStringValue, "aStringValue must not be null");
    if (aStringValue.equals("abcde") {
       return "fg";
   } else {
       return "de";
   }
}

String makeAString(@Nullable String aStringValue) {
    if (aStringValue == null) {
       return "kl";
    }
    if (aStringValue.equals("abcde") {
       return "fg";
    } else {
       return "de";
    }
}
+1

Source: https://habr.com/ru/post/1543525/


All Articles