Java中的Object类 ( 详解toString方法 | equals方法 )

简介: Java中的Object类 ( 详解toString方法 | equals方法 )

Object类

介绍:

 Object类是所有Java类的祖先(根基类),每个类都使用 Object 作为超类(父类),所有对象(包  括数组)都继承实现这个类的方法。

  new int[10].hashCode();   //数组也继承Object类

 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类


 public class Person {...}    等价于: public class Person extends Object {...}


常用方法:

1. toString方法

●   Object类中义定有public String toString()方法,其返回值是 String 类型,描述当前对象的有关信息。当需要通过输出语句输出一个对象时,如System.out.println(person),将自动调用该对象类的 toString()方法,如果该类中没有重写toString(),那么默认调用Object类中的toString(),默认输出对象hashCode值。我们可以根据需要在用户自定义类型中重写toString()方法。

public class Person {
    private String name ;
    private int age;
    public Person(){
 
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    /*
    * 当输出一个对象时会默认调用此对象的toString().
    * 如果类中没有定义toString(),会调用Object类中toString(),
    * Object类中toString()是吧对象在内存的哈希值返回(以16进制返回)
    * 把对象信息通过字符串形式输出
     */
 
//重写toString()
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public static void main(String[] args) {
  
        Person p1=new Person("小魏",18);
        System.out.println(p1);
    }

● 当我们重写toString方法后就可以把对象信息通过字符串形式输出了 。

(重写后的结果)

● 如果不重写的话会默认调用Object类中toString(),把对象在内存的哈希值返回(以16进制返回)。

(没重写的结果)

●  快速生成toString重写方法:

   右键选择Generate,点击toString()即可。


2.  equals方法

●  boolean   equals(Object obj)  判断两个对象是否相等

●  Object类中的equals默认比较的是两个对象的地址是否相等, 我们就可以使用 == 代替它,在其他类中,一般都重写了equals(), 把它改造为比较对象中的内容是否相等


public class Test_2 {
    public static void main(String[] args) {
        Person p1 = new Person("小魏",16);
        Person p2 = new Person("小魏",16);
        System.out.println(p1==p2);   //比较的是地址
        System.out.println(p1.equals(p2)); //已经对equals方法进行了重写,使其比较的是两对象内容是否相等
    }
}

●  (Object 中的 equals 方法默认使用==比较,比较的是对象地址,这点需要注意 )

●  在Person类中对equals方法进行重写,使其比较的是对象中的内容是否相等

 @Override
    public boolean equals(Object obj) {
        if(obj instanceof Person){
            Person other =(Person)obj;
            return name.equals(other.name) && age ==other.age;
        }
        return false;
    }

●  关于 " == " :

   “ == ” 比较等号两边是否相等

●  当==用于基本类型比较时,比较的是变量的值是否相等。

●  当==用于引用类型比较时,比较的是对象的地址是否相等。

( JDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法, x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等返回 true 否则返回 false )

相关文章
|
27天前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
14天前
|
存储 Java C++
java中“==”和equals,究竟比的是什么
java中“==”和equals,究竟比的是什么
48 4
|
28天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
45 8
|
26天前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
37 4
|
26天前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
27 4
|
24天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
25 1
|
28天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
64 1
JAVA中Object类的常用方法详解
JAVA中Object类的常用方法详解
  JAVA中Object类的常用方法详解