对String的一点了解
/** * @param args */ public static void main(String[] args) { String str1 = "welcome"; String str2 = new String("welcome"); System.out.println("---" + "welcome".hashCode() ); System.out.println("---" + str1.hashCode() + " " + (str1 == "welcome")); System.out.println("---" + str2.hashCode() + " "+ (str2 == "welcome")); } 输出: ---1233099618 ---1233099618 true ---1233099618 false 解释: str1 是直接指向了字符串常量池中的"welcome". new String("welcome") 创建了新对象,并且给str2对象做了初始化。 所以以上代码有两个对象 String 重写了hashCode()方法,所以str1和str2不是同一个对象,但hashCode相同.