Java SE Day1:Object类equals与toString深入解析

需积分: 0 0 下载量 136 浏览量 更新于2024-08-04 收藏 79KB DOCX 举报
今日的Java SE第1天学习任务围绕Object类及其常用API展开,主要聚焦于equals方法和toString方法的深入理解。以下是三个练习的详细解析: 1. **练习一:Object类equals方法** String类的equals方法用于比较两个字符串对象的内容是否相等,它实质上是比较字符串的字节序列。而Object类的equals默认行为是进行引用比较,即判断两个对象是否指向同一个内存地址,即是否为同一个实例。这意味着,即使两个String对象内容相同,如果它们是由不同的创建方式(如new String("abc")或直接赋值)得到,Object.equals会返回false,因为它们不是同一个对象。在实际编程中,我们通常使用String类的equals方法进行内容比较。 2. **练习二:Object类的toString方法** 在给出的示例代码中,ToStringTest类重写了toString方法。当`System.out.println("love" + new ToStringTest());`被执行时,会先调用toString方法,输出"I",然后返回"java"。接着,`System.out.println("me" + a.i);`再次调用toString方法,因为`a`是ToStringTest对象,此时a.i已经自增,所以输出结果为"me2"。总结,toString方法在输出对象时起到转换对象为可打印字符串的作用,且Java中的println会自动调用toString。 3. **练习三:Object类equals方法(修改后的题目)** 第一个程序片段中,`s1`和`s2`的定义方式不同:`s1`通过new关键字创建,`s2`直接赋值。由于字符串常量池的存在,"abc"在程序中只会有一个实例,所以`s1 == s2`的结果是false,因为它们指向不同的内存地址。这里强调了equals方法的两种用途:内容比较(`s1.equals(s2)`)可能返回true,但引用来判断它们是同一个对象则为false。 通过这三个练习,学生能够掌握Object类的equals方法如何进行对象比较以及toString方法如何影响对象的打印输出。理解这两个方法对于面向对象编程至关重要,它们在数据验证、字符串处理以及异常调试中扮演着重要角色。在实际开发中,熟练运用这些基础API可以提高代码的清晰度和效率。