问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

.equals()到底是什么意思?50

发布网友 发布时间:2023-10-12 20:00

我来回答

5个回答

热心网友 时间:2024-12-01 03:31

.equals() 在Java中判断是否相等,与 == 的区别是 .equals() 只判断值是否相等,不管两者是否存在同一地址。而 == 则是判断值与存在地址都得相等

扩展资料:

由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非我们在此类中重写equals。

另外,"=="比"equals"运行速度快,因为"=="只是比较引用。

热心网友 时间:2024-12-01 03:31

1.equals的本意——即在Object对象中定义的equals()方法有什么样的意义。
(此处先附上==的作用,后面仍有叙述。因为==和equals()方法的关系是很密切的,后面有我自己的看法。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true)

public boolean equals(Object obj)
其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.
public class Fish {
private int weight;
private String color;

public Fish(int weight, String color) {
this.color = color;
this.weight = weight;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}

public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class EqualsTest {
public static void main(String[] args) {
Fish f1 = new Fish(1, "blue");
Fish f2 = new Fish(1, "blue");

System.out.println(f1 == f2);
System.out.println(f1.equals(f2));
}
}
——————运行结果为——————
false
false
由此可见,equals()方法的本意为确定两个对象的引用是否相同。
2.而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:
java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)
public class EqualsTest {
public static void main(String[] args) {
String s1=new String("sss");
String s2=new String("sss");

System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
————————运行结果为——————
false
true
由此知道,在String中equals()方法被进行了覆盖,使其意义变为比较两个对象的内容是否一致
3.如果我们要自己覆盖equals()方法,让其比较内容或者有别的使用方法(当然我们一般都是用于比较内容的,但是覆盖的方法中真正的实现究竟是什么样的,谁知道呢O(∩_∩)O~)
public class Fish {
private int weight;
private String color;

public Fish(int weight, String color) {
this.color = color;
this.weight = weight;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((color == null) ? 0 : color.hashCode());
result = prime * result + weight;
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Fish other = (Fish) obj;
if (color == null) {
if (other.color != null)
return false;
} else if (!color.equals(other.color))
return false;
if (weight != other.weight)
return false;
return true;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class EqualsTest {
public static void main(String[] args) {
Fish f1 = new Fish(1, "blue");
Fish f2 = new Fish(1, "blue");

System.out.println(f1 == f2);
System.out.println(f1.equals(f2));
}
}
——————运行结果为——————
false
true
此例子中我复写了equals()方法和hashcode()方法,使得equals()方法脱离的本意,不再是比较两个对象的引用是否相同,而是比较其内容是否相同。
以上内容为一般书上的总结,下面是我自己想到的一些东西。
我们可以知道计算机归根到底进行的只是一些二进制数的与或非运算,加法乘法运算。由此有了些基本的运算符,所有的函数本质上其实现都是使用基本运算符来实现的。而==是基本运算符中的一个,它的作用:用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
而equals()作为方法,我们可以推测知道,它其中的实现所使用的肯定是==运算符。再进一步的思考,equals()本意不正是==运算符进行对象比较时候的作用吗。那么,既然是两者有同样的作用,为什么还要弄出一个equals()方法来呢。因为==运算符不允许我们进行覆盖,也就是说它*了我们的表达。在上面的第三个例子中,我们复写equals()方法,达到比较对象内容是否相同的目的。而这些通过==运算符是做不到的。

热心网友 时间:2024-12-01 03:32

1.==比较的是地址
2.至于为啥比较的是地址?不是内容。这个是JAVA规定的,不是我们可以控制的
3.说equals比较的是值是完全不对的。要看他是否有重写object的equals方法。如果没有,他比较的肯定是也地址。如果有,那么很有可能他比较的是值,但也不尽然 。可以看他的源码。比如Integer a=1.Doubleb=1;a.equals(b)那肯定是false。因为他在重写时还判断了类型

热心网友 时间:2024-12-01 03:32

if(b1==b2)是比较b1跟b2的地址,那当然是不同的咯,所以执行else,然后if(b1.equals(b2))是比较b1与b2的值,它们两个的值都 是true。。相等是吧,所以输出C,,呵呵 ,现在理解了吗?

热心网友 时间:2024-12-01 03:33

您好,在Java以及C#语言中,这个方法都用于判断两个值是否相等。a.equals("b"),java中常用语判断字符串的值是否一致。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
济南的冬天赏析 济南的冬天全文赏析 魅蓝Note5#魅蓝3S锁屏就重启是什么原因 ...药?小狗已经三天了不吃不喝还呕吐尿很黄不拉,精神不好去宠物医院化验... 狗狗今天吐了黄水昏昏欲睡 还抽搐给喝了妈咪爱睡了一觉好了也许但还是... ...了开始拉稀,不吃东西,昨天超级没精神,后给喂了点药,今天精神点了... 昨晚狗狗又吐又拉然后我喂了妈咪爱,今天早上没精神的,刚刚又喂了妈 小狗两个月,昨天拉稀不吃饭,我喂了妈咪爱,下午有精神了可那跑着玩。今 ... 国内有哪些生产疫苗的公司?研发、质量管理水平分别如何? 三联恒通(北京)科技发展有限公司怎么样? 什么是三联集团 如果车被GPS断电断油了怎么处理,能直接找人拆掉吗? java中if("".equals(_id))的双引号是什么...2 眼下是眼袋吧 一条线,从小就有 眼睛底下突然发现一条线眼见下面颧骨那里 不是眼袋 在眼袋下面 我这是眼袋还是什么啊,内眼角的那一条线很明显 不小心加入热水,鳄龟会不会烫死 怎样让孩子静下来3 lol金克丝出装,新手提问~~ 介绍一些好听的古典音乐【国外的、】 彩虹岛各种职业的技能名称(转职前.后) 碳水化合物包含哪些食物?341 17951,17909,17911,193……分别代表什么?... WIN10系统office打不开,提示找不到AppVIsvS...31 号码前加17911与加17951有什么区别啊5 急求一部歌的名字和歌词 补铁食物推荐 水培一帆风顺花如何固定?25 一帆风顺水养的要换土培要注意什么 ?67 碳水化合物包含哪些食物?341 碳水化合物的食物有哪些?1766 gps定位器下发断油电指令成功了,为什么车的油电还是没有断呢...9 java中这个.equals();是什么,有什么用,怎么用?8 GPS车辆定位监控的辅助功能中,断油断电在实际应用中真的有意...18 java System.out.println("\"hel...3 c#中Equals的意思11 乌龟长期泡在热水和冷水里面会怎么样? 肯德基的油条,为什么称之为安心油条4 请问肯德基的安心油条到底是用什么发泡的?25 肯德基油条广告6 立邦10公斤石膏粉多钱一代袋,求解答,谢谢了! CPU x5650 配GTX660 可以FIFA19或者实况...2 红高粱 占鳌身边的军师怎么到花脖子那去了 花脖子最后怎么样了... 林肯公园主唱为什么叫cc22 前辈们!现在GTX660TI能流畅运行哪些游戏?1 这个配置换一个GTX660的显卡和一个FX8300处理器可以... ge force gt440好还是七彩虹gtx660好??1 这个配置可以嘛?主要玩魔兽世界英雄联盟,能特效全开吗?显卡自... 请推荐几款去疲劳提精神的炖汤吧 比喻人的力量能支配自然1 天蝎座的女生的性格、特点,还有别的,能全部告诉我吗?73