美文网首页
String comparison

String comparison

作者: 成江 | 来源:发表于2018-01-23 21:36 被阅读6次

    == 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).

    Consequently, if you want to test whether two strings have the same value you will probably want to use Objects.equals().

    You almost always want to useObjects.equals(). In the rare situation where you know you're dealing with interned strings, you can use ==.

    // 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 
    
    // ... string literals are concatenated by the compiler
    // and the results are interned.
    "test" == "te" + "st" // --> true
    
    // ... but you should really just call Objects.equals()
    Objects.equals("test", new String("test")) // --> true
    Objects.equals(null, "test") // --> false
    

    相关文章

      网友评论

          本文标题:String comparison

          本文链接:https://www.haomeiwen.com/subject/qlpeaxtx.html