arrays.equals的用法_equals的用法|重点聚焦

时间:2023-05-04 17:05:53 来源: 互联网

1、1.equals的本意——即在Object对象中定义的equals()方法有什么样的意义。

2、(此处先附上==的作用,后面仍有叙述。

3、因为==和equals()方法的关系是很密切的,后面有我自己的看法。


(资料图)

4、 ==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为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)); }}——————运行结果为——————falsefalse由此可见,equals()方法的本意为确定两个对象的引用是否相同。

5、2.而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:java.io.file,java.***.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)); }}————————运行结果为——————falsetrue由此知道,在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)); }}——————运行结果为——————falsetrue此例子中我复写了equals()方法和hashcode()方法,使得equals()方法脱离的本意,不再是比较两个对象的引用是否相同,而是比较其内容是否相同。

6、以上内容为一般书上的总结,下面是我自己想到的一些东西。

7、我们可以知道计算机归根到底进行的只是一些二进制数的与或非运算,加法乘法运算。

8、由此有了些基本的运算符,所有的函数本质上其实现都是使用基本运算符来实现的。

9、而==是基本运算符中的一个,它的作用:用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true 而在比较引用时,如果引用指向内存中的同一对象,结果为true而equals()作为方法,我们可以推测知道,它其中的实现所使用的肯定是==运算符。

10、再进一步的思考,equals()本意不正是==运算符进行对象比较时候的作用吗。

11、那么,既然是两者有同样的作用,为什么还要弄出一个equals()方法来呢。

12、因为==运算符不允许我们进行覆盖,也就是说它限制了我们的表达。

13、在上面的第三个例子中,我们复写equals()方法,达到比较对象内容是否相同的目的。

14、而这些通过==运算符是做不到的。

本文为大家分享到这里,希望小伙伴们有帮助。

标签:

相关文章

四川11人被骗偷渡出境“挣大钱” 主犯被判刑2年

成都4月23日电 (吴平华 黄静)近日,四川资阳市公安局临空经济区分局破获了一起11人偷越国边境案,目前...

来源:2022-04-24

全民战疫要坚持的12个健康生活细节

全民战疫,细节制胜!4月21日,上海市健康促进委员会办公室、上海市健康促进中心向全体市民发布倡议书,...

来源:2022-04-24

中国青少年儿童身心健康教育管理委员会正式成立

北京4月23日电 (记者 高凯)23日,中国青少年儿童身心健康教育管理委员会在北京会议中心正式成立。 当日...

来源:2022-04-24

吉林省遭遇“沙尘周” 局地瞬时风力超10级

长春4月23日电 (记者 郭佳)23日,狂风卷着沙土在吉林省多地肆虐。记者从吉林省气象台获悉,这是该省入...

来源:2022-04-24

青海西宁解“静”首日见闻:解“静”不解防

西宁4月23日电 题:青海西宁解“静”首日见闻:解“静”不解防 作者 祁增蓓 23日上午,位于青海省西宁...

来源:2022-04-24

精彩推送