What is the difference between strings allocated using new operator & without new operator in java J2ME?

后端 未结 5 1307
不知归路
不知归路 2020-12-03 23:39

what is the Difference between

String str=new String(\"Thamilan\");

and

String str=\"Thamilan\";

in java

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-04 00:08

    The difference is that the new String creates a new object with the same value as the literal passed in:

        String s = "abc";
        String t = new String("abc");
    
        System.out.println(s==t); //false
    
        String u = "abc";
        String v = "abc";
    
        System.out.println(u==v);  //true
    

    This is because the literal are always from the internal pool.

    You might want to look at the intern method - here is its description:

    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

提交回复
热议问题