a = 10;
b = 10;
if(a == b){
//写要执行的代码
}
2、引用数据类型比较
ClassA a = new ClassA("abc");
ClassB b = new ClassB("abc");
if(a == b){
//写要执行的代码
}
显然在例1中 a == b的值为true,例2中a == b值为false
——————————————————————————————————————————————————
public class TestEqual{
public static void main(String [ ] args){
//简单类型比较
int a = 100;
int b = 100;
System.out.println("a == b?" + (a == b));
//引用类型比较
Integer c = new Integer(100);
Integer d = new Integer(100);
System.out.println("c == d?" + (c == d));
}
}
运行该程序,会打印出以下信息:
a == b? true
c == b? false
可以看出,在引用类型比较中,虽然用了同一个参数“100”来构造两个变量,但他们仍然不同。
why??
要知道,对于这两个引用类型变量c和d,他们指向的是两个不同的对象(只不过两个对象的值都是100),因为是指向两个对象,所以比较这两个变量会得到false的值。
注意啦,重要结论:
对于引用类型变量,运算符“==”比较的是两个变量是否引用同一对象。
————————————————————————————————————————
那么如何比较对象的值是否相等呢?
在java中提供了equals()方法用于比较对象的值。我们把上面引用类型部分的程序稍作修改:
Integer c = new Interger(100);
Integer d = new Interger(100);
System.out.println("c equals d?" + (c.equals(d) ));
运行后可得一个true,这是因为,方法equals()进行的是“深层比较”,他会去比较两个对象的值是否相等。
————————————————————————————————————————
总结:
1、如果测试两个简单类型的数值是否相等,则一定要用“==”来比较;
2、如果要比较两个引用变量对象的值是否相等,则要用对象的equals()方法进行比较;
3、如果需要比较两个引用变量是否指向同一对象,则使用“==”来进行比较;