Java中,我们要经常进行条件的判断,但是对于两种判断方式“==”和“equals()”,又不是很清楚具体的使用方法
1、 其中:::
“==”:是用来比较字符串的引用地址,也就是说从地址上面进行比较
“equals()”:即 equals(Object o): Object类中的方法,所以,在每一个java类中,都会有这个方法,因为每一个java类都是直接或者间接的Object类的子类,会继承到这个方法,如果自己所写的类中已经重写了equals方法,那么就按照用户自定义的方式来比较两个对象是否相等,如果没有重写过equal()方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值,而在比较字符串时比较字符串的值,因为在String 类中,将Object类中的equals方法进行了重写,重写之后比较的是内容
注意:equals(Object o)方法只能是一个对象来调用,然后参数也是要传一个对象的
所以下面是错误的写法:因为基本数据类型不是算是对象,不能调用方法
int a = 1;
a.equals(1);
2、 如果是基本数据类型那么就用==比较,如果是引用类型的话,想按照自己的方式(重写自己要进行比较的东西)去比较,就要重写这个类中的equals方法, 如果没有重写,那么equals和==比较的效果是一样的,都是比较引用的地址值
如果是比较字符串,那么直接用equals就可以了,因为String类里面已经重写了equals方法,比较的是字符串的内容,而不是引用的地址值了
比如定义
Student s1=new Student(); Student s2=new Student();
s1==s2为false,因为s1与s2不是同一个地址
如果采用如下定义:
Student s1=new Student();
Student s2=s1;
则结果为:s2==s1为true,因为s2是s1的赋值
具体来讲,假如两个值相同,不同地址的字符串用“==”比较,其布尔值为false,而用“equals()”进行比较,其布尔值为true,在正常比较时,除非两个对象是赋值关系,不然比较字符串是否相同应该用equals();