java(== and equals)
来源:互联网 发布:免费手机网络电话软件 编辑:程序博客网 时间:2024/06/17 01:23
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~)
- java(== and equals)
- "==" and "equals"
- Difference between 'equals' and '==' in Java
- Java.equals.==
- java ==: equals:
- java equals ==
- java == equals
- java equals ==
- ==, .equals(), compareTo(), and compare() (之一)
- ==, .equals(), compareTo(), and compare() (之一)
- Java中如何判断两个对象是否相等(Java equals and ==)
- Java compareTo, equals and hashcode
- Java equals() and hashCode() Contract
- Java equals() and hashCode() Contract
- Java - "==" and "equals" are different method to String Class
- JAVA ==&equals
- Java: equals 和 ==
- java equals和==
- spring cloud config实现datasource的热部署
- This is very likely to create a memory leak. Stack trace of thread
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) /查找一个字符串中第一个只出现两次的字符
- C#web知识
- linux chmod 755的含义
- java(== and equals)
- 欢迎使用CSDN-markdown编辑器
- Android 自定义Dialog
- Java String
- 动态规划的背包问题 (共六题)
- TensorFlow 基本变量定义,基本操作,矩阵基本操作
- 大数加法 自定义函数
- vue.js使用总结
- python——asyncio模块实现协程、异步编程(二)