equals 与 ==
引申出的知识点:
1 int与integer的比较 Integer vs int
string的比较String常量池 及 String StringBuilder StringBuffer 对比 总结得非常好 包括string.intern
2 因为==常常决定锁的有效性,进而再引出以integer或string作为锁
Integer vs int
由一个多线程共享Integer类变量问题引起的。。。
3 ==是public static native int identityHashCode(Object x);相等的充分非必要条件
hashcode & System.identityHashCode
4 如果某个类是单例,则可以直接用==判断是否相同,比如jvm方法区对于Class类的对象(类对象)
同一个类加载器下某个全类名类只能由一份
String s = "x";
String l = "x";
System.out.println(s.getClass() == l.getClass());
注意,不同类加载器下,即使是同一个类,也会==相同,因为在方法区中内存地址不同
String s = "x";
String l = "x";
System.out.println(s.getClass() == l.getClass());