When “” == s is false but “”.equals( s ) is true

前端 未结 10 1463
深忆病人
深忆病人 2020-11-30 19:46

EDIT Thanks for the prompt responses. Please see what the real question is. I have made it bold this time.

I do understand the difference between ==

10条回答
  •  一整个雨季
    2020-11-30 20:25

    The javadoc for String.intern() has some good commentary on == vs. .equals().

    The documentation also clarifies that every string literal is intern'd.

    public String intern()

    Returns a canonical representation for the string object.

    A pool of strings, initially empty, is maintained privately by the class String.

    When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

    It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

    All literal strings and string-valued constant expressions are interned. String literals are defined in §3.10.5 of the Java Language Specification

    Returns: a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.

提交回复
热议问题