Java SE学习笔记 --->高级类特性 ---> toString() 方法

时间:2023-02-25 16:53:28

概述

  toString() 方法在面向对象当中十分常见,使用频率很高,和equals() 方法一样,也是Object类中定义的方法。

jdk中 源码:

java.lang.Object类中ToString() 方法的定义如下:

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

 

知识点:

1.toString()方法在 Object 类中定义。其返回值是String类型,返回类名和它的引用地址

  如:

public class TestToString {
    public static void main(String[] args) {
        Person p1 = new Person("AA", 10);
        System.out.println(p1.toString());  //com.klx.learn7.Person@d17
        System.out.println(p1);    //com.klx.learn7.Person@d17

    }
}

    com.klx.learn7.Person@d17

    @前边的“com.klx.learn7.Person” 对象所在的类

    @后边的"d17" 该对象的实体在堆空间中的首地址值(16进制)

 

2.当我们打印一个对象的引用时,实际上默认调用的就是这个对象的toString()方法在进行String与其他类型数据的链接操作时,也会会自动调用toString() 方法。

 

  例:

Date now=new Date();
System.out.println(“now=”+now);  
相当于:System.out.println(“now=”+now.toString());//now=Date@122345

 

3.当我们打印的对象所在的类 没有重写Object 中的toString() 方法时,那么调用的就是Object 中定义的toString() 方法,返回此对象所在的类以及对应的堆空间对象实体的首地址值。

 

4.当我们打印的对象所在的类 重写了toString() 方法时,调用的就是我们自己重写的toString() 方法。

比如:在所在的类中做如下定义:

public String toString() {
        return "Person: name=" + name + " age:" + age;
    }

那么当我们再次打印之前的

System.out.println(p1.toString());  //Person: name=AA age:10
System.out.println(p1);    //Person: name=AA age:10

 

5.一般来说,在设计、新建一个类时,都提供一个toString() 方法。

常常这样重写:将对象的属性信息返回。

可以手动实现,也可以用eclipse自动调用(Source--->Generate toString())

 

6.java 中 的String类或者 Date类、包装类、File类等,已经实现了Object类中 toString() 方法的重写

 

7.可以根据需要再用户自定义类型中重写toString() 方法。 如String 类重写了toString() 方法,返回字符串的值。