Java Object类的简单学习
Object的toString方法
-
toString 方法返回的是字符串,直接打印对象的名字,就是调用对象的toString,也就是打印对象堆内存中的地址值
-
重写toString方法
复制
/** * @Version: 1.8.0_201 Java SE 8 * @Description: toString 方法返回的是字符串,直接打印对象的名字,就是调用对象的toString * 也就是打印对象堆内存中的地址值 */ public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public void methodStudentMassage() { System.out.println( "Student{" + "name='" + name + '\'' + ", age=" + age + '}' ); } /** * 重写toString方法 * @return 学生的信息 */ @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } } -
测试重写的toString方法
复制
/** * @Version: 1.8.0_201 Java SE 8 */ public class DemoStudentToString { public static void main(String[] args) { Student student = new Student("Lee Hua", 21); // 不重写toString方法 student.methodStudentMassage(); // 重写了toString方法 System.out.println( student.toString() ); } } -
输出结果
复制
Student{name='Lee Hua', age=21} Student{name='Lee Hua', age=21}
Object类的equals方法
-
quals方法:其他某个对象是否与此对象相等
-
调用成员方法quals并指定参数为另一个对象,则可判断这两个对象是否相同
复制
public boolean equals(Object obj) { return (this == obj); } this 表示:哪个对象调用了equals方法,那么this就是那个对象
-
实例理解
-
创建一个Person类,用于测试
-
复制
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
-
-
测试
复制
public class DemoPersonEquals { public static void main(String[] args) { Person person1 = new Person("一号", 20); Person person2 = new Person("二号", 21); // 对象person1 和 对象person2 进行比较 boolean p = person1.equals(person2); System.out.println(person1); System.out.println(person2); System.out.println(p); } } -
输出结果
复制
Person@61bbe9ba Person@610455d6 false -
实例补充
复制
/** * Person类如果重写类Object的toString方法,则返回字符串,而不是地址值 * 举例: */ @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }
-
-
在Person类里边覆盖重写equals方法
复制
public class Person { /** * 多态,无法使用子类特有内容,所以可进行覆盖重写 * 覆盖重写equals方法,提高程序的效率 */ @Override public boolean equals(Object obj) { // 如果传递的参数obj是this本身,直接返回true if (obj == this) { return true; } // 如果传递参数是null,直接返回false if (obj == null) { return false; } // 防止类型转换报:ClassCastException if (obj instanceof Person) { // 向下转型,将 obj 转换为 Person 类型 Person person = (Person)obj; return this.name.equals(person.name) && this.age == person.age; } // 不是Person类,也不是null,也直接返回false else { return false; } } } -
使用IDEA编译工具,可以用 Generate 直接生成与上等功能代码
复制
public class Person { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Person person = (Person) o; return age == person.age && name.equals(person.name); } }
注意事项
使用equals方法时,防止空指针异常
实例理解
复制import java.util.Objects; public class DemoObjectEquals { public static void main(String[] args) { String s1 = "abc"; String s2 = null; // 不会出现空指针异常 // 输出 false System.out.println( s1.equals(s2) ); // 会出现空指针异常NullPointerException // 报错 Exception in thread "main" java.lang.NullPointerException System.out.println( s2.equals(s1) ); // 空指针异常,可以使用java.util.Objects的equals方法,防止空指针异常 // 输出 false System.out.println( Objects.equals(s1, s2) ); } }
本文来自博客园,作者:LeeHua,转载请注明原文链接:https://www.cnblogs.com/liyihua/p/12179849.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)