1)基本介绍
== :是一个比较运算符,检查两个操作数的值是否相等,如果相等则条件为真
equals() : 方法用于判断 Number 对象与方法的参数进是否相等
2)判断类型不同
== :可以判断基本类型,也可以判断引用类型
equals : 只能判断引用类型
3)判断细节
== 判断细节:
== 如果判断基本类型的话是比较两个值是否是相等的(byte,short,int,long....),如果是判断引用类型的话是判断两个值是否指向同一个对象(也就是地址是否相同)
equals 判断细节:
是Object类的方法,只能判断引用类型,在Object类中为判断两个地址(指向对象)是否相同,但子类会重写父类方法,用于判断值是否相同
4)案例演示
new两个object对象,o1与o2,由于两个都是引用类型,用等号 == 进行比较,比较两者地址是否相同,equals方法也是一样,因此输出两个false.
public static void main(String[] args) { // String s = new String("java"); // String s1 = new String("java"); // int bb = 1; // int aa = 1; Object o1 = new Object(); Object o2 = new Object(); System.out.println(o1 == o2); System.out.println(o1.equals(o2)); }
new两个String对象,s1与s2,由于两个都是引用类型,用等号 == 进行比较,比较两者地址是否相同,此时两个指向的地址不是同一个,返回false,此时equals方法是重写了父类Object的方法,用来比较两个值是否相等,此时输出的是true.
public static void main(String[] args) { String s1 = new String("java"); String s2 = new String("java"); // int bb = 1; // int aa = 1; // Object o1 = new Object(); // Object o2 = new Object(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); }
定义两个变量,aa,bb 由于两个都是基本数据类型,用等号 == 进行比较,比较两者值是否相同,返回true,此时equals方法并无法判断基本数据类型,所以运行将会报错
public static void main(String[] args) { // String s1 = new String("java"); //String s2 = new String("java"); int bb = 1; int aa = 1; // Object o1 = new Object(); // Object o2 = new Object(); System.out.println(aa == bb); System.out.println(aa.equals(bb)); //此时报错 }