equals()方法
回顾==与equals()的区别
1、== :
是运算符;
可以用在基本数据类型和引用数据类型中;
基本数据类型中,比较的是两个变量存储的值,注意类型自动转换
引用数据类型中,比较的是两个对象的内存地址值
public class Untitled{
public static void main(String[] args) {
//基本数据类型
int a = 65;
int b = 20;
double d = 65.0;
char i = 65;
char j = 'A';
System.out.println(a == b);
System.out.println(a == d);
System.out.println(a == i);
System.out.println(i == j);
System.out.println(a == j);
//报错: incomparable types: int and boolean
//boolean c = true ;
//System.out.println(b == c);
//引用数据类型
Test t1 = new Test(10,"a");
Test t2 = new Test(10,"a");
System.out.println(t1 == t2); //false
String s1 = new String("ab");
String s2 = new String("ab");
System.out.println(s1 == s2); //false
}
}
class Test{
int age;
String name;
public Test(int age,String name){
this.age = age;
this.name = name;
}
}
2、equals() :
是一个方法;
只适用于引用数据类型;通过对象“点”出来,因为Object是父类
未被重写的equals()方法比较的是对象的内存地址值
在源码String、Date、File、包装类中,都重写了equals()方法,重写以后,比较的就是对象里面保存的值是否相同
class Untitled {
public static void main(String[] args) {
Test t1 = new Test(10,"a");
Test t2 = new Test(10,"a");
System.out.println(t1.equals(t2)); //false
String s1 = new String("ab");
String s2 = new String("ab");
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true
}
}
class Test{
int age;
String name;
public Test(int age,String name){
this.age = age;
this.name = name;
}
}
手动重写 equals() 方法
IDEA 是可以自动生成equals()方法的,但是要知道思路
会用到多态操作
public class Test{
}
class Customer{
int age;
String name;
@Override
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj instanceof Customer){
Customer cus = (Customer)obj;
return this.age == cus.age && this.name == cun.name;
}
return false;
}
}
String类中生成equals()方法
public boolean equals(Object anObject){
if(this == anObject){
return true;
}
if(anObject instanceof String){
String anotherString = (String)anObject;
int n = value.length;
if(n == anotherString.value.length){
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while(n-- != 0){
if(v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
toString()方法
toString`方法是java中用来将对象的哈希值(也即内存地址)打印的方法
当你运行println方法时,会有一个运行toString()方法的过程,会调用该对象所在类中的toString()方法
若没有重写toString()方法,便会调用父类Object中的toString()方法,打印内容为:程序名@hashcode
若已经重写toString()方法,则会调用重写的该方法
class Untitled {
public static void main(String[] args) {
//重写`toString()`方法
System.out.println(new Test2()); //Test2的0 null Test1的
//没有重写
System.out.println(new Test3()); //Test3@53d8d10a
}
}
class Test1{
public String toString(){
return "Test1的";
}
}
class Test2{
private int a;
String b;
Test1 t = new Test1();
public String toString(){
return "Test2的"+a+" "+b+" "+t;
}
}
class Test3{}
Java equals()与toString()详解
本文详细介绍了Java中equals()方法与toString()方法的区别及使用场景,包括基本数据类型与引用数据类型的比较方式,equals()方法的手动重写过程,以及toString()方法在对象输出中的作用。
190

被折叠的 条评论
为什么被折叠?



