黑马程序员技术交流社区
标题:
toString方法应用的问题
[打印本页]
作者:
zhouxp3323
时间:
2012-3-17 21:21
标题:
toString方法应用的问题
定义一个Person类,有name和age属性,它的构造方法
Person(String name,int age){
this.name = name;
this.age = age;
}
定义这些属性的get方法和toString方法,有什么区别呢,什么时候用toString方法比较合适啊,谁知道吗?
作者:
谢明
时间:
2012-3-17 21:43
toString 不复写的话就是 按照object 中的格式输出 继承么
比如说你的 person 类想要 一次就输出 姓名 年龄 或者还有其他的 那你就可以 覆写 toString 让他一次性都表示出来 用以打印
不然你就要 很多次的执行 get**() 方法了
作者:
周建
时间:
2012-3-17 23:47
复写toString方法可以一次性获取person的所有属性值,复写get方法一次只能得到一个属性,且在输出语句System.out.println(person)中默认执行toString方法;
若想在其他代码中获取该对象的属性值用get(),若是想打印结果用toString()比较高效;
作者:
申振华
时间:
2012-3-18 01:38
get方法和toString方法 的功能都是读取操作。
由于java的封装性,我们在定义类时,属性私有化,方法公共的化理念,竟而对外提供了set,get方法。
通过 对象.getXXX方法 就能读取属性。
而tostring方法属于Object类中的,而所有的类都可以是object的子类,所以你在打印对象时,则会自动调用tostring方法。
示例代码:
public static void main(String[] args) {
Person stu=new Person("lisi",23);
System.out.println("name:"+stu.getName()); //读取name
System.out.println("age:"+stu.getAge()); //读取age
System.out.println(stu); //自动调用toString方法
}
复制代码
输出结果:
name:lisi
age:23
Person@c17164
从上面的代码看出在打印对象时,调用了tostring方法,输出的结果是哈希值,并不是我们想要的值。这个时候我们就要覆写toString方法来读取我们想要的属性。
代码:
public String toString(){
return "name:"+this.name+",age:"+this.age;
}
复制代码
结果:
name:lisi
age:23
name:lisi,age:23
这样我们想要的值就读取出来了。
假如有这样的需求:只需要读取name的值.
那我们就可以使用getName()方法读取,也可以打印对象调用toString方法读出,但是我们一旦调用toString方法后,结果输出的是name和age两个属性,对需求不符合。这个我们就要再次对toString方法进行修改,这样程序就失去了灵活性。所以调用getName()方法更简单更方便。
如果name和age都要读取,则可以调用toString方法更简单。
在实际开发中,建议使用getXX方法去读取每个属性的值。
作者:
盛亚昆
时间:
2012-3-18 10:49
toString是Object类的一个方法,java中任何对象都可以调用toString()方法,要继承覆写后可以打印出对象所有类型的属性。 get要有对象调用返回同类型的属性
作者:
李创
时间:
2012-3-18 10:54
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
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2