May 7, 2017

[HDGEM] If you want to test whether two strings have the same value you will probably want to use Objects.equals().

== tests for reference equality (whether they are the same object).

.equals() tests for value equality (whether they are logically "equal"). 

Objects.equals() checks for nulls before calling .equals() so you don't have to (available as of JDK7, also available in Guava).

// These two have the same value  new String("test").equals("test") // --> true 
    // ... but they are not the same object 
new String("test") == "test" // --> false 
    // ... neither are these 
new String("test") == new String("test") // --> false 
    // ... but these are because literals are interned by the compiler and thus refer to the same object 
"test" == "test" // --> true
// you should prefer to call Objects.equals()  Objects.equals("test", new String("test")) // --> true  Objects.equals(null, "test") // --> false

It's better to use Objects.equals()


In the rare situation where you know you're dealing with interned strings, you can use ==.



--
Posted By Blogger to HDGEM at 5/07/2017 04:03:00 AM