1.测试基本数据类型
public class Test1{
public static void main(String[] args) {
int int1 = 1;
int int2 = 1;
/*
当比较类型是基本数据类型时 == 比较的是值
*/
System.out.println(int1==int2);
/*
equal方法只能用于引用数据类型,不能用于基本数据类型,因为它比较的是内存地址
*/
//System.out.println(int1.equal(int2));
}
}
2.测试引用数据类型
public class TestEqual {
public static void main(String[] args) {
String str1 = "main";
String str2 = "main";
//当比较类型是引用数据类型时,== 比较的是内存地址
//注意引用数据类型Integer中,0-127是提前加载到内存中的,所以所用引用指向的是同一地址
Integer int1 = 0;
Integer int2 = 0;
System.out.println(int1==int2);//返回true
System.out.println(int1.equals(int2));//返回true
Integer int3 = 128;
Integer int4 = 128;
System.out.println(int3==int4);//返回false
System.out.println(int3.equals(int4));//返回true
//equals比较的内存地址中所存储的值(基本数据类型)是否相同
System.out.println(str1==str2);//返回true
System.out.println(str1.equals(str2));//返回true
//所有的字符串都是提前加载到内存中,所以值相同的字符串内存地址也相同
}
}
总结:
==:当比较的是基本数据类型是,==判断的是值是否相等;当比较的是引用数据类型是,则判断的是对象地址是否相同(即是否是同一对象)
equals():equals()只能用于引用数据类型,因为equals()比较的是对象地址中所存储的值(基本数据类型)是否相同