百度
360搜索
搜狗搜索

equals和 的区别,equals和==的区别是什么?详细介绍

本文目录一览: equals和==的区别是什么?

一、含义不同:
==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。(比较地址值即是指是否为同一个对象的引用)
equals()是一个方法,只能比较引用数据类型。重写前比较的是地址值,重写后比一般是比较对象的属性。
二、引用不同:
值类型(int,char,long,bolean等)都是用=判断相等性。对象引用的话,=判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(overide)这个方法,用于判断对象的等价性。
三、方法不同:
String里的方法,如果==号比较不相等,还会进行一下值的比较。所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。如果没有重写该方法,那么他和==号等价。
扩展资料:
Eg:s1 = new String("sony"); //创建的是字符串对象
s1.equals("sony"); //返回true
s1 == "sony" //返回false
//如果
s1 = "sony";
s1 == "sony" //返回true
//如果
s1 = "sony";
s2 = "sony";
s1.equals(s2); 或者string.equals(s1,s2);//返回true
参考资料来源:百度百科-equals

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);}
凡是比较基本类型只能用==,比较结果你看到的字面值相等就会相等,什么叫基本类型? byte,short,int,long,char,float,double这几种就是基本类型.基本类型不是对象所以不存在用equals比较.
凡是比较引用类型(对象),==比较的是两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.
基本类型的包装类型是对象类型,所以除非两个相同字面值的引用指向同一内存地址,值才会相等,比如:
Integer a=new Integer(3);Integer b=a;//互相赋值
这样用等号或equals比较都会得出true,记住一点,凡是两个引用都用了new去初始化,那==比较的结果都只会是false,互相之间有了赋值,比较结果就为true.
比较不好理解的一点:
String a="abc";
String b="abc";
a==b和a.equals(b);结果都会为true,因为没有用new去新建对象,其实a和b都指向的是同一个String对象"abc",改成:
String a=new String("abc");
String b=new String"abc");
后==的结果就是false了.总之参照上面的说明,不难理解.
在比较字符型数据时,==比较的是内存中的地址,是对象的句柄
而equals()比较的是地址内的内容,比较的是对象.
你只要记住
== 判断的是”地址“是否相等。
而equles判断的是“内容”是否相等。就可以了。
new一个对象就会不同。
具体应该自己动手试试看,这样最有效。
String s="123";
String s1="123";
String s3 = new String("123");
System.out.pirntln("s==s1");
System.out.pirntln("s==s3");
System.out.println("s.equles(s1)");
看看结果就自然明白了。
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和==的区别

equals和==的区别如下:
==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。
(比较地址值即是指是否为同一个对象的引用)
equals()是一个方法,只能比较引用数据类型。重写前比较的是地址值,重写后比一般是比较对象的属性。
扩展资料:
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。
byte,short,char,int,long,float,double,boolean,他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型。
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址。
但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

Equals 和 == 的区别

1. == 是一个运算符。
  2.Equals则是string对象的方法,可以.(点)出来。
  
  我们比较无非就是这两种 1、基本数据类型比较 2、引用对象比较
  1、基本数据类型比较
  ==和Equals都比较两个值是否相等。相等为true 否则为false;
  
  2、引用对象比较
  ==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;
  
  需注意几点:
  1、string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;
  2、当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值。
  所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
  3、基本数据类型比较(string 除外) == 和 Equals 两者都是比较值;

简述“==”和“equals”的区别

==比较数值或者地址引用的相等。
equals比较两个对象内容之间的相等。
1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
  2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
  4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。
请采纳,谢谢

阅读更多 >>>  户外运动护膝选择的困扰

equal和equals的区别是什么?

1、be equal to中的equal是形容词,意为相同的,同样的,相等的,平等的,能胜任的
2、equals to中的equal是动词,意为与…相等,比得上,敌得过
3、两者在等于、相等这个意思上没有区别,但是前一个还有胜任的意思,而后者没有。
4、句型“be equal to......”属于等比句型,比较双方基本等同,常用形式是“主语十be equal to+等比对象”。句型翻译为“……和……相当”。
例句:we're equal to him. 我们和他一样。
5、equal to .....意思是等于,相当,胜任。
例句:Equal to one billion one megaton hydrogen bombs. 等于10亿个百万吨级的氢弹。
扩展资料equal /?i?kw?l/ DJ /'ikw?l/ KK
名词复数:equals
adj.形容词
1.(大小、数量、价值等)相同的,同样的;相等的 ~ (to sb/sth)
2.(权利、能力、等级、地位等)平等的;同等的
3.(力气、勇气、能力等)相当的;能胜任的;能应付的 ~ to sth formal
4.(效果、效力或作用方面)平衡的,均匀的,平均的;相称的;
n.名词
1.的人;相等物
2.与之比拟的东西, 匹敌者;
3.(地位、实力等)相同的人,相等的人,同等的人,对等的人;
v.动词
1.(大小、数量、价值等)与…相等,等于 linking verb V-N
2.比得上;敌得过
参考资料:百度百科-equal

java基础中equals和==的区别

首先、==是判断两个变量或实例是不是指向同一个内存空间
而equals是判断两个变量或实例所指向的内存空间的值是不是相同
其次、==是指对内存地址进行比较
equals()是对字符串的内容进行比较
最后、==指引用是否相同
equals()指的是值是否相同
另外,值相同,地址不一定相同,而地址相同,值一定相同,即用equals比较的值为true,用==进行比较就不一定返回true,而用==比较为true,那么用equals比较就一定为true。
顺便提一句: == 是一个运算符。equals则是string对象的方法,可以.(点)出来。

equals和==的区别

equals用来比较字符串,==用来比较基本类型(如int long)
那就从创建对象说:
一个类声明对象,这个对象其实就是一个引用型变量,里面存放的是引用(即地址),
在用new运算符和构造方法创建对象时,这个new运算就会返回一个引用存放在对象中,。
equals(String s)是String类中的方法,作用是比较当前字符串对象的实体是否与参数指定的字符串的实体相同(比较的是引用所指向的实体)
==比较的是对象中存放的引用
举个例子:
String S1=new String("I love you");
String S2=new String("I love you");
S1.equals(S2)返回值是true
S1==S2返回值是false(因为用new创建对象时返回的引用时不相同的)
==比较的是一个对象在内存中的地址值,不比较内容,比如你定义了两个数字,内容一模一样,但是它们是两个数字,存在不同位置,所以不等。
equals()是针对引用的,比较的是引用类型的内容一样不一样,比如两个类的比较

java equals和==的区别

equals()比较对象本身是否相同
==比较内存中的存放地址是否相同
==使用运算符用来比较两个原生类型数据的值是否相同的
equals是用来比较两个引用类型数据是否相同用的
equals是Object类中定义的方法,因为所有类都默认继承自Object,所以所有类都有这个方法,equals方法的实现是可以通过重写这个方法来变更的
java基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符==来进行比较时,比较的就是 “值” 本身。而对于引用类型的变量,存储的并不是 “值”本身,而是于其关联的对象在内存中的地址。equals比较的内存地址。
equals 比较两个变量所引用的对象的内容是否一样;
== 比较两个变量是不是引用了同一个对象
对于Object类来说 , equals和== 是一样的 , 可以看一下Object类的 equals方法:
此时的equals 和 == 比较的都是 对象的内存地址 , 如果是基本数据类型 , 比较的是值
java中 , 所有类都是Object的子类 , 对于一些JDK提供的基础类 , 很多都复写了Object的 equals方法 , 比如String , 复写之后 , 比较的是字符串的内容 , 又比如 Long , 比较的是数值 ,
还有Date , 比较的是时间戳 , 如果没有复写Object的 equals方法 , 那么这个对象的 equals和 == 是一样的

网站数据信息

"equals和 的区别,equals和==的区别是什么?"浏览人数已经达到18次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:equals和 的区别,equals和==的区别是什么?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!