1. 对于基本类型(只能用==)
== 比较值
2. 对于基本类型的封装类(Boolean ,Integer,Double,Long,Float)
== 比较地址
equals 比较值
3. 对于类对象
== 比较地址
equals 比较值
4. 对于String
== 比较地址
equals 比较值
验证用代码如下:
import java.util.ArrayList;
public class TestEquals {
public static void main(String[] args) {
// To validate basic data types
int intA = 1;
int intB = 1;
System.out.println("intA == intB is " + (intA == intB));
// To validate wrapper classes
Integer integerA = new Integer(1);
Integer integerB = new Integer(1);
Integer integerC = integerA;
System.out.println("------------------------------");
System.out.println("integerA == integerB is " + (integerA == integerB));
System.out.println("integerA.equals(integerB) is " + (integerA.equals(integerB)));
System.out.println("integerA == integerC is " + (integerA == integerC));
System.out.println("integerA.equals(integerC) is " + (integerA.equals(integerC)));
// To validate ordinary classes
ArrayList<Integer> arrayListA = new ArrayList<Integer>();
arrayListA.add(integerA);
ArrayList<Integer> arrayListB = new ArrayList<Integer>();
arrayListB.add(integerA);
ArrayList<Integer> arrayListC = arrayListA;
System.out.println("------------------------------");
System.out.println("arrayListA == arrayListB is " + (arrayListA == arrayListB));
System.out.println("arrayListA.equals(arrayListB) is " + (arrayListA.equals(arrayListB)));
System.out.println("arrayListA == arrayListC is " + (arrayListA == arrayListC));
System.out.println("arrayListA.equals(arrayListC) is " + (arrayListA.equals(arrayListC)));
// To validate String class
String stringA = new String("123");
String stringB = new String("123");
String stringC = stringA;
System.out.println("------------------------------");
System.out.println("stringA == stringB is " + (stringA == stringB));
System.out.println("stringA.equals(stringB) is " + (stringA.equals(stringB)));
System.out.println("stringA == stringC is " + (stringA == stringC));
System.out.println("stringA.equals(stringC) is " + (stringA.equals(stringC)));
}
}
执行结果为:
intA == intB is true
------------------------------
integerA == integerB is false
integerA.equals(integerB) is true
integerA == integerC is true
integerA.equals(integerC) is true
------------------------------
arrayListA == arrayListB is false
arrayListA.equals(arrayListB) is true
arrayListA == arrayListC is true
arrayListA.equals(arrayListC) is true
------------------------------
stringA == stringB is false
stringA.equals(stringB) is true
stringA == stringC is true
stringA.equals(stringC) is true