equals()方法左右变量的位置

本文探讨了在使用equals()方法进行比较时,将变量或常量放置在前后的优劣分析,指出将常量置于前可以避免空指针异常。
昨天面试考了一张很是伤我自信的题目,唉!
多余的话不说了,我还是把考题慢慢发出来吧
题:一个变量,一个常量,用equals()方法比较,让咱们,看看到底是常量放前面好啊,还是变量放前面好
----------------------------------------------------------------------------------------------
其实说白了,如果是两个都是变量,那就放哪都行没啥区别;(有点废话了)
现在主要就是有一个是常量,大家应该知道吧,equals()方法是在Object类里定义的,也就是说任何对象都可以调用equals()方法,但是对象在调用方法的时候,如果对象为null那系统运行就会报空指针异常;出现异常这显然是我们不愿意看到的;
-------------------------------------------------------------------------------------------------
现在看这题,前面说了,如果把变量放在前面也就相当于是调用了这个变量的equals方法,那么如果此变量为空的时候就会报NullPointException了,所以肯定是把常量放前面会好些了啊;这样,我们就不用做空指针的异常处理了
--------------------------------------------------------------------------------------------------
这里再说一点,可能有的同学会想,为什么把变量放在括号里就不会出现空指针异常呢,呵呵,其实大家想想,equals()方法是不是可以比较一个变量是不是等于空啊,就是 s.equals(null);  是不是啊,括号里直接写null都可以了,还怕变量为null吗
Java的Object类是所有类的超类,它定义了一些基本的方法,常见的有toString()equals()和hashCode()等。 toString()方法可以将对象以字符串的形式表示。像String类继承Object类,并对toString方法进行了重写,使其返回自身字符串,避免返回哈希码[^2][^4]。 equals()方法用于比较对象。在Java里,使用“==”进行比较时,如果左右两侧是基本类型变量,比较的是变量的值;如果是引用类型变量,比较的是引用变量的地址。若要比较对象内容,就必须重写Object中的equals方法,因为该方法默认按地址比较。例如定义一个Student类,重写equals方法来比较学生姓名是否相同 [^5]。示例代码如下: ```java package demo1; //定义了一个Student类,并给出了其姓名,年纪和分数的初始值 class Student{ String name = "张三"; @Override public boolean equals(Object obj) { // 重写了equals方法。 if(obj == null) { return false; } //指向的是同一个对象 if(this == obj) { return true; } if(! (obj instanceof Student)) { return false; } Student student = (Student ) obj; if (this.name.equals(student.name)){ return true; } else { return false; } } } public class Test1 { public static void main(String[] args) { Student student1 = new Student(); Student student2 = new Student(); System.out.println(student1.equals(student2)); } } ``` hashCode()方法在引用中提及后期补充,但它也是Object类的重要方法,通常与equals方法配合使用,用于在哈希表等数据结构中确定对象的存储位置 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值