玖叶教程网

前端编程开发入门

"=="和equals方法的区别

【死记硬背】

"=="是运算符,用来判断两个变量之间的值是否相等,变量分为基本数据类型和引用数据类型。 如果是基本数据类型,则直接比较变量的值; 如果是引用类型,则是比较变量引用的内存的首地址的值;

注意:在基本数据类型的“==”比较中,变量的类型不同,但值可能相等。

equals是类的方法,用来比较两个对象长得是否一样,而判断两个对象的某些特征是否一样,实际上就是调用对象的equals方法进行比较。在实际开发过程中,通常重新equals方法,使用对象中的所有属性或者其中部分属性来判断对象是否相等。

【答案解析】

对于基本类型的验证:

int number1 = 666;
long number2 = 666;
System.out.println("变量的类型不同,但值相同:"+(number1==number2));
// 变量的类型不同,但值相同:true
int number3 = 666;
int number4 = 888;
System.out.println("变量的类型相同,但值不同:"+(number3==number4));
// 变量的类型相同,但值不同:false

对于引用类型的验证:

String s1 = new String("面试题解析");
String s2 = new String("面试题解析");
String s3 = new String("面试题解析最棒");
System.out.println("s1和s2值相同:"+(s1.equals(s2)));
// s1和s2值相同:true
System.out.println("s2和s3值不同:"+(s2.equals(s3)));
// s2和s3值不同:false

// 下面是String类重写的equals方法
public boolean equals(Object anObject) {
  	// 内存地址相同,则两个对象相等
    if (this == anObject) {
        return true;
    }
  	// 字符串中的字符逐一比较,返回false则不相等,返回true则相等
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
  	// 其他类型,则直接返回false,说明不相等
    return false;
}

【温馨提示】

点赞评论+转发文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言