重写java中的toString()方法

2019-03-07  本文已影响0人  SeekerLinJunYu

a.java中的toString()方法用于描述对象本身.每个一个对象,系统都默认自带toString方法,如果想要将对象输出为自己想要的更加规范的格式,则需要重写方法.
b.对于一些比较简单的输出格式,往往可以直接使用string.format()完成格式输出.如:

@Override
    public String toString() {
        return String.format("学生的名字叫做:%s,今年%d岁了", name,age);
    }
输出示例为: 学生的名字叫做:xixi,今年25岁了.

c. 对于一些较为复杂的输出格式,往往需要用到StringBuilder类.StringBuilder的对象是一串可变的字符;从文档了解到:(The principal operations on a StringBuilder are the append and insert methods, which are overloaded so as to accept data of any type.)其主要的用法是append和insert,这两种方法可以接收任何类型的数据.(Each effectively converts a given datum to a string and then appends or inserts the characters of that string to the string builder. The append method always adds these characters at the end of the builder; the insert method adds the characters at a specified point. )每一种方法都能将给定的数据转换成字符然后添加append在builder字符串的最后或者insert进指定的位置.其中最后一行代码res.toString()的toString()方法的作用在于返回一个代表目标对象的字符串.
实现代码例如:

    @Override
    public String toString() {
        StringBuilder res = new StringBuilder();
        res.append(String.format("Array:size =%d,capacity = %d\n",size,data.length));
        res.append('[');
        for(int i = 0;i<size;i++) {
            res.append(data[i]);
            if(i != size - 1) {
                res.append(",");
            }
        }
        res.append(']');
        return res.toString();
    }
其对象输出为:Stack:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],看似与format功能相同,但是实则通过append等方法,StringBuilder比String.format() 更加灵活,适用面更广泛.
上一篇下一篇

猜你喜欢

热点阅读