一、回顾 == 的使用:
== :运算符
-
- 可以使用在基本数据类型变量和引用数据类型变量中
-
- 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
-
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
-
补充: == 符号使用时,必须保证符号左右两边的引用数据类型变量类型一致。
二、equals()方法的使用:
-
- 是一个方法,而非运算符
-
- 只能适用于引用数据类型
-
- Object类中equals()的定义:
-
public boolean equals(Object obj) {
return (this == obj);
}说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体文章来源:https://www.toymoban.com/news/detail-475227.html
-
- 像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
-
- 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写.
重写的原则:比较两个对象的实体内容是否相同.文章来源地址https://www.toymoban.com/news/detail-475227.html
//基本数据类型
int i = 10;
int j = 10;
double d = 10.0;
System.out.println(i == j);//true int会自动类型提升double-->10.0
System.out.println(i == d);//true
boolean b = true;
System.out.println(i == b); //false
char c = 10;//10的ASCII码就是10
System.out.println(i == c);//true
char c1 = 'A';
char c2 = 65; //A的ASCII码就是65
System.out.println(c1 == c2);//true
//引用类型:
Customer cust1 = new Customer("Tom",21);
Customer cust2 = new Customer("Tom",21);
System.out.println(cust1 == cust2);//false
System.out.println(cust1.equals(cust2));
//false--->true(Customer类中重写equals方法后这里输出true)
String str1 = new String("atguigu");
String str2 = new String("atguigu");
System.out.println(str1 == str2);//false 因为地址不同
System.out.println(str1.equals(str2));//true
如何重写equals()
手动重写举例:
class User{
String name;
int age;
//重写其equals()方法
public boolean equals(Object obj){
if(obj == this){
return true;
}
if(obj instanceof User){
User u = (User)obj;// 向下转型 不转的话User中的属性就调用不了,将 obj 对象转换为 User 类型的对象
return this.age == u.age && this.name.equals(u.name);
//判断两个 User 对象的 age 属性是否相等。
} //name是String类型所以要用equals比较
return false; //如果不是同一类型 直接返回false
}
}
----开发中如何实现:idea可以手动ait+ins生成
toString方法
toString()方法
toString()的使用:
1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
s1=“hello”;System.out.println(s1);
//相当于
System.out.println(s1.toString());
2. Object类中toString()的定义:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
其返回值是String类型,返回类名和它的引用地址。
3. 像String、Date、File、包装类等都重写了Object类中的toString()方法。
使得在调用对象的toString()时,返回"实体内容"信息
4. 自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"
如何重写toString()
5. 基本类型数据转换为String类型时,调用了对应包装类的toString()方法
int a=10;
System.out.println(“a=”+a);
举例:
//自动实现
@Override
public String toString() {
return "Customer [name=" + name + ", age=" + age + "]";
}
到了这里,关于Java面试题: == 和 equals() 区别,toString方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!