黑马程序员技术交流社区

标题: tostring()方法 [打印本页]

作者: hsen    时间: 2014-4-18 15:06
标题: tostring()方法
本帖最后由 hsen 于 2014-4-19 10:31 编辑

1.toString()方法
Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
toString()方法将对象转换为字符串。看以下代码:



package sample;

class Villain {
private String name;

protected void set(String nm) {
name = nm;
}

public Villain(String name) {
this.name = name;
}

public String toString() {
return "I'm a Villain and my name is " + name;
}
}

public class Orc extends Villain {
private int orcNumber;

public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
}

public void change(String name, int orcNumber) {
set(name);
this.orcNumber = orcNumber;
}

public String toString() {
return "Orc" + orcNumber + ":" + super.toString();
}

public static void main(String[] args) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
}
}



结果:
sample.Orc@11b86e7
sample.Orc@11b86e7
如果去掉注释,即加入2个toString()方法后,得到
结果:
Orc12:I'm a Villain and my name is Limburger
Orc19:I'm a Villain and my name is Bob

2.在容器类中使用toString()
编写一个工具类,用于在控制台输出Iterator。

import java.util.Iterator;

public class Printer {
static void printAll(Iterator e){
while(e.hasNext()){
System.out.println(e.next());
}
}
}


在Hamster类中重写父类的toString()方法。

public class Hamster {
private int hamsterNumber;
public Hamster(int hamsterNumber){
this.hamsterNumber=hamsterNumber;
}

public String toString(){
return "This is Hamster #"+hamsterNumber;
}
}


在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。

import java.util.ArrayList;
import java.util.List;

public class HamsterMaze {
@SuppressWarnings("unchecked")
public static void main(String[] args){
List list=new ArrayList();
for(int i=0;i<3;i++)
list.add(new Hamster(i));
Printer.printAll(list.iterator());
}
}


结果:
This is Hamster #0
This is Hamster #1
This is Hamster #2




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2