1、功能不同
"=="是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
2、定义不同
"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。
例子:
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1.equals(student2));
System.out.println(student1 == student2);
3、运行速度不同
"=="比"equals"运行速度快,因为"=="只是比较引用。
"equals"比"=="运行速度要慢。
扩展资料
equals()方法特点:
1、自反性:x.equals(x)返回true;
2、对称性:若x.equals(y)为true,则y.equals(x)亦为true;
3、传递性:若x.equals(y)为true且y.equals(z)也为true,则x.equals(z)亦为true;
4、一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也均为true,前提条件是没有修改x也没有修改y;
5、对于非空引用x,x.equals(null)永远返回为false。
参考资料:百度百科-equals
equals()和==的区别:
一、对象类型不同
1、equals():是超类Object中的方法。
2、==:是操作符。
二、比较的对象不同
1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。
2、==:用于比较引用和比较基本数据类型时具有不同的功能。
三、运行速度不同
1、equals():没有==运行速度快。
2、==:运行速度比equals()快,因为==只是比较引用。
equals()和==的实例应用:
equals()和==的源码定义:
public boolean equals(Object obj) {
return (this == obj);
}
由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写。
但是没有对equals进行重写的类就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非在此类中重写equals。
对equals重新需要注意五点:
1、自反性:对任意引用值X,x.equals(x)的返回值一定为true;
2、对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3、传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true ;
4、 一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变;
5、非空性:任何非空的引用值X,x.equals(null)的返回值一定为false 。
==:
== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
1、比较的是操作符两端的操作数是否是同一个对象。
2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。
3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:
int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。
equals:
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
String s="abce"是一种非常特殊的形式,和new 有本质的区别。它是java中唯一不需要new 就可以产生对象的途径。
以String s="abce";形式赋值在java中叫直接量,它是在常量池中而不是象new一样放在压缩堆中。这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象。
如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,如果没有,则在常量池中新创建一个“abcd"”,下一次如果有Strings1="abcd";又会将s1指向“abcd”这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象。
而String s=new String("abcd”);和其它任何对象一样.每调用一次就产生一个对象,只要它们调用。
也可以这么理解:String str="hello”;先在内存中找是不是有“hello”这个对象,如果有,就让str指向那个“hello”。
如果内存里没有"hello",就创建一个新的对象保存"hello”.String str=new String(“hello")就是不管内存里是不是已经有"hello"这个对象,都新建一个对象保存"hello"。
本回答被网友采纳equals()和==的区别:
1、对象类型不同
equals()是超类Object中的方法。
==是操作符。
2、比较的对象不同
equals()用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能。
扩展资料
java中所有类的父类是Object类,在Object中,已经定义了一个equals()方法,但是这个默认的equals()方法实际上也只是测试两个变量引用是否指向同一对象(即与 == 功能一样)。所以它并不一定能得到你所期望的效果。
通常我们需要自己将定义的类(就是上面的TestEqual)中的equals()进行重写。像Integer封装类就已经重写了Object中的equals()方法,直接可以拿来比较引用类型c和d指向的对象的值。
在Object类当中定义的equals方法:
public boolean equals(Object obj) {return (this == obj);}
本回答被网友采纳equals()和==到底有什么区别啊?
1、功能不同 "=="是判断两个变量或实例是不是指向同一个内存空间。"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。2、定义不同 "equals"在JAVA中是一个方法。"=="在JAVA中只是一个运算符合。例子:Student student1 = new Student();Student student2 = new Student();System.o...
“==” 和 EQUALS 的区别是什么?
==和equals的区别有对象类型不同、比较的对象不同、运行速度不同。一、对象类型不同:1、equals():是超类Object中的方法。2、==:是操作符。二、比较的对象不同:1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。2、==:用于比较引用和比较基本数据类型时具有不同的功...
简述==与equals()方法的区别。
简述==与equals()方法的区别。如下:1.equals是方法,而==是操作符。2.对于基本类型的变量来说(如short、int、long、float、double),只能使用==,因为这些基本类型的变量没有equals方法。对于基本类型变量的比较,使用==比较,一般比较的是它们的值。3.对于引用类型的变量来说(例如String类)才有equal...
java中equals和==的区别
在Java中,equals()方法和==运算符的主要区别在于,equals()用于比较对象的内容是否相等,而==运算符用于比较对象的引用是否相等。一、equals()方法 equals()方法是Java.lang.Object类的一部分,它是用于比较对象的内容是否相等的方法。当我们使用equals()方法比较两个对象时,它比较的是这两个对象的值...
== 和 equals 的区别是什么?
在Java中,“==”和“equals()”的区别如下:- “==”是比较运算符,用于比较两个变量或实例是否指向同一个内存空间,即比较它们的地址是否相同。对于基本数据类型(如short、int、long、float、double),只能使用“==”,因为这些基本类型的变量没有重写equals()方法。对于引用类型的变量来说(例如...
Java中比较两个字符串==和.equals()区别
在Java中,==和.equals()都是用于比较字符串是否相等的工具,但它们的运作原理有所不同。==比较的是两个字符串的引用地址,意味着它检查的是变量是否指向同一个内存位置。若两个字符串变量指向同一字符串常量池中的对象,==比较将返回真值;反之,则返回假值。.equals()方法则比较的是字符串的内容...
String使用equals和==比较的区别
== 和 Equals 的区别 1. == 是一个运算符。2.Equals则是string对象的方法,可以.(点)出来。比较无非就是这两种 1、基本数据类型比较 2、引用对象比较 1、基本数据类型比较 ==和Equals都比较两个值是否相等。相等为true 否则为false;2、引用对象比较 ==和Equals都是比较栈内存中的地址是否相等...
.equals()到底是什么意思?
.equals() 在Java中判断是否相等,与 == 的区别是 .equals() 只判断值是否相等,不管两者是否存在同一地址。而 == 则是判断值与存在地址都得相等
“==”和“equals”的区别?
即栈中的内容是否相同。equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。常用于网络,由两个等于号组成,但要注意与代"等等"的"=="区别开来。"=="中间是没有空格的。
带你区别equals和==
首先,理解==和equals。==比较的是基本数据类型或引用是否指向同一对象。而equals方法用于类对象,用于比较对象内容是否相同。任何类都继承自Object类,其中equals默认实现方式是通过==进行比较。基本数据类型没有equals方法,因此不能使用equals进行比较。在Object类中,equals方法默认通过==比较对象引用。如果...