Tuesday 18 June 2013

How TO Compare Strings in Java


== tests for reference equality.
.equals() tests for value equality.

Consequently, if you actually want to test whether two strings have the same value you should use.equals() (except in a few situations where you can guarantee that two strings with the same value will be represented by the same object eg: String interning).

== is for testing whether two strings are the same object.

// 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

// concatenation of string literals happens at compiletime resulting in same objects
"test" == "te" + "st" ==> true

// but .substring() is invoked at runtime, generating distinct objects
"test" == "!test".substring(1) ==> false


EmoticonEmoticon