Brock Weaver wrote: > Java has turned out to be a very successful language. Some may argue it is > not a "good" language as it makes certain compromises ("joe" == "joe" > returns false -- now that seems weird, albeit correct since there is no > operator overloading). Not so, actually. All Java string constants and compile-time expressions are put in the intern pool, so "joe" and "joe" will always test ==, because they are guaranteed to be the same object. "joe" will not necessarily test == to a String object with a value of "joe", but it is guaranteed to if you have used the intern() method. public final class Joe { public static void main (String[] args) { System.out.println ("joe" == "joe"); // true final String joe = "joex".substring(0, 3); System.out.println (joe == "joe"); // false final String joe2 = joe.intern (); System.out.println (joe2 == "joe"); // true System.exit (0); } } -- John W. Kennedy "Information is light. Information, in itself, about anything, is light." -- Tom Stoppard. "Night and Day"