刚才看了一下别人的博客,想加深一下对 equal 和 == 的了解。
总结了几点:
1.equal 每个类都有必要覆盖一下,对于String 类,已经覆盖,比较的是String对象的字符序列是否相等。
2.== 比较的是内存中两个对象是否为同一个,即地址是否相等;而对于基本数据类型,比较的是字面数值是否一样。
package com.java.test; import org.junit.Test; public class MyEqual { @Test public void test() { int a1 = 10; int a2 = 10; Integer b1 = 10; Integer b2 = 10; String s1 = "abcd"; String s2 = "abcd"; String s3 = new String("abcd"); System.out.println(a1 == a2);//true System.out.println(b1 == b2);//true System.out.println(b1.equals(b2));//true System.out.println(b1 == a1);//true System.out.println(b1.equals(a1));//true System.out.println(s1 == s2);//true System.out.println(s1 == s3);//false System.out.println(s1.equals(s3));//true } }