Java,Object类及常用方法
equals()的使用:
一、适用性:
任何引用数据类型都可以使用。
二、java.lang.Object类中equals()的定义:
public boolean equals(Object obj)
{
return (this == obj);
}
三、子类使用说明:
-自定义的类在没有重写Object中equals()方法的情况下,调用的就是Object类中声明的equals(),比较两个对象的引用地址是否相同。(或比较两个对象是否指向了堆空间中的同一个对象实体)
-对于像String、File、Date和包装类等,它们都重写了Object类中的equals()方法,用于比较两个对象的实体内容是否相等。
四、开发中使用说明:
-实际开发中,针对自定义的类,常常会判断两个对象是否equals(),而此时主要是判断两个对象的属性值是否相等。
所以:我们要重写Object类中的equals()方法。
-如何重写:
>手动自己实现
>调用IDEA自动实现
import java.util.Objects;
public class UserTest
{
public static void main(String[] args)
{
User u1 = new User("Tom",12);
User u2 = new User("Tom",12);
System.out.println(u1.equals(u2));//false--->true
String str1 = new String("hi");
String str2 = new String("hi");
System.out.println(str1.equals(str2));
}
}
class User
{
String name;
int age;
public User()
{
}
public User(String name, int age)
{
this.name = name;
this.age = age;
}
// public boolean equals(Object obj)
// {
// if(this==obj)
// {
// return true;
// }
//
// if(obj instanceof User)
// {
// User user = (User) obj;
// //方法一
// if(this.age == user.age&&this.name.equals(user.name))
// {
// return true;
// }
// else
// {
// return false;
// }
// //方法二
// return this.age == user.age&&this.name.equals(user.name);
// }
// return false;
// }
//idea自动实现
@Override
public boolean equals(Object o)
{
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(name, user.name);
}
}
五、区分==和equals()
==:逻辑运算符
使用范围:基本数据类型、引用数据类型
-基本数据类型:判断数据值是否相等
-引用数据类型:判断地址值是否相等
equals():方法
使用范围:引用数据类型
具体使用:对于类来说,重写与不重写的区别
toString()的使用:
一、Object类中toString()的定义:
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
二、开发中的使用场景:
-平时调用System.out.println()打印对象引用变量时,其实就调用了对象的toString()
三、子类使用方法说明:
-自定义的类,在没有重写Object类的toString()的情况下,默认返回当前对象的地址值
-像String、File、Date或包装类等Object子类都重写了toString()方法,在调用toString()时,返回当前对象的实体内容
四、开发中使用说明:
-习惯上,开发中对于自定义的类在调用toString()时,也希望显示其对象的实体内容,而非地址值。这时候,就需要重写Object类中的toString()
public class toStringTest
{
public static void main(String[] args)
{
User u1 = new User("Tom",12);
System.out.println(u1.toString());
System.out.println(u1);
}
}
class User
{
String name;
int age;
public User()
{
}
public User(String name,int age)
{
this.name=name;
this.age=age;
}
//手动生成
// public String toString()
// {
// return "User{ name = "+name+", age = "+age+" }";
// }
//idea自动生成
@Override
public String toString()
{
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
更多推荐


所有评论(0)