Object类 中toString()方法详解+String类

Object类 中toString()方法详解

1.1 概述

java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。

如果一个类没有特别指定父类, 那么默认则继承自Object类。例如:

public class MyClass /*extends Object*/ {
  	// ...
}

根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。

  • public String toString():返回该对象的字符串表示。

1.2 toString方法

方法摘要

  • public String toString():返回该对象的字符串表示。

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

覆盖重写

如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。例如自定义的Person类:

public class Person {  
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
    }

    // 省略构造器与Getter Setter
}

tostring()方法

思考:为什么定义string类型的字符串,
通过输出语句就能把字符串打印出?
因为String类当中已经对tostring方法进行的重写

public class TestString {
    public static void main(String[] args) {
        String str = "abc";
        System.out.println(str);//打印abc
        //	像string,Date,File 包装类等都重写了Object类中的tostring()方法 
        //	  使得调用对象的tostring()时,返回"实体内容"信息
        System.out.println(str.toString()); //同样打印abc
    }
}

	//tostring()的使用:
	1.当我们输出一个对象的引用是,实际上就是调用当前对象的tostring()
		Customer cus=new Customer();
		System.out.println(cus.tostring());
		System.out.println(cus);//输出的内容一样
	2.像string,Date,File 包装类等都重写了Object类中的tostring()方法 
	  使得调用对象的tostring()时,返回"实体内容"信息
	3.自定义类也可以重写tostring()方法,当调用此方法时,返回对象的”实体内容“  
	  重写tostring()方法:
	  public String toString(){
		  return ..........
	  }

案例分析

//student类会继承object类,当然也会继承object类中的toString()方法
public class Student /*extends object */ {
    private String name;
    private int age;

    public Student() {
    }
       public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
 // 省略构造器与Getter Setter
}
//********************************************************************

//1.不重写toString()方法
//没有重写toString()方法,会默认继承object类中的toString方法
 public class TestString {
    public static void main(String[] args) {
        Student s = new Student("张三",18);
        System.out.println(s);//打印的不是 张三,18  而是cn.itcast.day08.Student@1540e19d
    }
}   

//2.重写Student类中的toString()方法
public class Student /*extends object */ {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
 // 省略构造器与Getter Setter
}

public class TestString {
    public static void main(String[] args) {
        Student s = new Student("张三",18);
        System.out.println(s);//重写后打印:Student{name='张三', age=18}
        System.out.println(s.toString());//Student{name='张三', age=18}
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值