一、==的使用
可以使用在基本数据类型变量和引用类型变量中如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等。(不一定类型要相同)
public class EqualsTest {
public static void main(String
[] args
) {
int i
= 10;
int j
= 10;
double d
= 10.0;
System
.out
.println(i
== j
);
System
.out
.println(i
== d
);
boolean b
= true;
char c
= 10;
System
.out
.println(i
== c
);
}
}
如果比较的是引用类型变量,则比较地址值是否相同。
Person person1
= new Person("张三", 18);
Person person2
= new Person("李四", 20);
System
.out
.println(person1
== person2
);
二、equals()方法的使用
是一个方法,非运算符
只适用于引用数据类型
Object类中equals()的定义:
public boolean equals(Object obj
) {
return (this == obj
);
}
说明:Object类中定义的equals()和==的作用是相同的,比较两个对象的地址值是否相同,即两个引用是否指向同一个实体。
像String 、Date、File、包装类等都重写了Object类中的equals方法。重写后比较的不是两个引用地址是否相同,而是两个对象的“实体内容“是否相同
总结
“==” 比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】equal 用于比较两个对象的值是否相同【不是比地址】【特别注意】Object 类中的 equals 方法和 == 是一样的,没有区别,而 String 类,Integer类等等一些类,是重写了 equals 方法,才使得 equals 和 ‘==’ 不同,所以,当自己创建类时,自动继承了 Object 的 equals 方法,要想实现不同的等于比较,必须重写 equals 方法。== 比“equal”运行速度快,因为"=="只是比较引用.