...
If it is desired to keep only one copy of the string in memory, perform quick repeated comparisons and ensure that string1.equals(string2)
is true
, the following Compliant Solution may be utilizedused.
Code Block | ||
---|---|---|
| ||
public class GoodComparison { public static void main(String[] args) { String one = new String("one"); String two = new String("one"); boolean result; if (one != null){ one = one.intern(); } if (two != null){ two = two.intern(); } result = one == two; System.out.println(result); } } |
...
Wiki Markup |
---|
In general, for any two objects, it is permissible to compare their elements provided that the class is a singleton. The use of static factory methods over constructors facilitates instance control which in turn limits the effective number of instances of an immutable class to one. As a Thusresult, for two objects a and b, a.equals(b) is true only when a==b \[[Bloch 08|AA. Java References#Bloch 08]\]. The {{String}} class does not possess these characteristics. |
...