好多人搞不清equals和==的区别,今天我来浅谈一下,如有误请批评指正。
我们常常简单理解为==运算符用来比较两个基本数据类型的数值是否相同,而equals()方法用来比较两个对象是否相同。
这样的理解也可以,但我们还是要看看更深层次的含义,那样会更加清晰
1,.对于基本数据类型,byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。
int x=1;
int y=1;
System.out.println(x==y);//true
2,主要区别是:==常用于比较原生类型,而equals()方法用于检查对象的相等性。另一个不同的点是:如果==和equals()用于比较对象,当两个引用地址相同,==返回true。而equals()可以返回true或者false主要取决于重写实现。
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a==b); //返回为false,比较两个对象地址
这是因为==比较的是两个引用时是不是指向同一个内存地址,而equeals比较的是字面值。上面的new就产生了两个不同的对象,那么其内存地址肯定也就不同了
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a.equals(b)); //返回为true ,比较对象具体内容
总结:
1,使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。
2,==返回true如果两个引用指向相同的对象,equals()的返回结果依赖于具体业务实现
3,字符串的对比使用equals()代替==操作符