前言
昨天考试考了Java,有道题问到了==和equals的区别,我看着挺眼熟的,但不会写,蒙了个一个是判断值是否相等,一个是地址是否相等。考完后,回来看了看书,考试前一天在String类里面看到了这个,可不是眼熟嘛,但是没讲区别——在StringBuffer和StringBuilder拓展里面的,又说是Object类里面的,翻去前面,也没仔细讲这个,所有又来了解了一下它们的区别。
==和equals的区别
== 不属于任何类;equals()方法是超类Object里面的,Object类是所有类的直接或间接的父类。
在基本数据类型中,使用 == 就可以比较两边值是否相等。
在引用数据类型中, == 比较的是两个对象的引用,就是内存地址是否相等(是否是同一个对象);equals()比较的是两个对象的值,就是内存地址里面存放的值是否相等。
比如:
String a = "a";
String b = "a";
(a == b) 输出true,对象相同。
String a = new String("a");
String b = new String("a"); 输出false,因为不是指向同一个对象,地址不同。
而如果用equals()方法:a.equals(b),输出true,值相等。
浙公网安备 33010602011771号