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 )

相关文章
|
16天前
|
Java
【Java】Object类简单解析
【Java】Object类简单解析
15 1
|
21天前
|
前端开发 JavaScript Java
Java基础10-深入理解Class类和Object类(二)
Java基础10-深入理解Class类和Object类(二)
21 5
|
20天前
|
Java API
API:object当中的各种方法刨析(今日份:equals toString)
API:object当中的各种方法刨析(今日份:equals toString)
|
10月前
|
Java
JAVA方法的定义
JAVA方法的定义
46 0
|
6天前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
7 1
|
2月前
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
26 1
|
2月前
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
25 1
|
2月前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
31 0
|
2月前
|
Java 编译器
探究Java【方法的定义及使用】----【简单面试题】
探究Java【方法的定义及使用】----【简单面试题】
41 2
|
2月前
|
Java Go
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项