“==“: ==如果是比较引用类型,则是比较两个引用是否是指向同一个对象。
"equals": 如果引用equals的类没有重写equals方法,则equals方法和==是一样的意思,即比较两个引用地址是否相等。如果重写,则一般比较的是对象的内容是否相等,具体的视重写的方法而定。
Integer a = new Integer(1);
Integer b = new Integer(1);
a==b为false,equals为true。
因为a和b分别new了两个对象,所以两个对象的地址是不同的,==为false。equals为ture是因为Integer重写了equals方法。所以直接
比较对象的值。
这是Integer类的源代码中的equals方法,可以看到,当a.equals(b)时,则是先判断b是不是Integer的实例,如果是,则把b强制转换
成integer进行数值比较,如果数值相同则为true
上面的输出为false,因为c并没有重写equals方法,所以相当于是c==cc,比较的内存地址,所以为false
"=="比较基本类型如int的时候,则是比较的值相当。
上面返回true,因为s1创建时,常量池里面有了字符串123,所以当s2创建的时候,则s2直接指向字符串123,所以两个是相等的。这点
要注意