关于toString方法

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:56:14
class Cleaner {
private String s = new String("Cleanser");
public void append(String a) { s += a; }
public void dilute() { append(" dilute()");
public String toString() { return s; }

public static void main(String[] args) {
Cleanser x = new Cleanser();
x.dilute();
System.out.println(x);这句 如果要输出字符串不应该写s吗s才等于这个字符串啊
}
}

System.out.println(x); 的本质:
如果x是对象,会自动调用x的toString();方法.
如果x是基本类型就调用String.valueOf(x);返回一个字符串,然后打印.

Cleanser x = new Cleanser();
x是Cleanser 的实例,x实例中包含属性s
toString是x的方法,当然要x.toString() 了
所以System.out.println(x);//System.out.println(x.toString());

你的那个自定义的toString方法都没有被调用嘛。

这个看看:
public class Test {
private String s = new String("Cleanser");

public void append(String a) {
s += a;
}

public void dilute() {
append(" dilute()");
}

public String toString() {
return s;
}

public static void main(String[] args) {
Test x = new Test();
x.dilute();
String s = x.toString();
System.out.println(s);

}

}

你在你的类里面重写了Object的toString()方法的啊!
System.out.println();就是调用一个类的toString();方法来打印的。
如果不重写就调用Object的toString()----打印地址.

这个toString()是你自己重写的覆盖这个类的toString()方法,使他能获得你想要