一般在Java中,我知道,如果我们尝试打印多个对象(名为乔,史蒂夫,理查德例如对象)这样的我不明白toString方法。如何打印对象的内容?
System.out.println(Joe);
System.out.println(Steve);
System.out.println(Richard);
结果将是存储位置不是对象本身。但是,如果我只在其中一个方法上调用toString方法,它将正常打印对象的内容,这就是我无法理解的。
另外,如果toString方法是一个预定义的方法,为什么我必须在我的代码中重新编写它? 谢谢。
public class Time {
int Hours;
int Minutes;
int Seconds;
public Time(int h, int m, int s){
Hours = h;
Minutes = m;
Seconds = s;
}
public Time(){
Hours = 0;
Minutes = 0;
Seconds = 0;
}
public int hours ()
{
return Hours ;
}
public int minutes ()
{
return Minutes ;
}
public int seconds ()
{
return Seconds;
}
public void addhour ()
{
if (Hours == 23)
{
Hours = 0 ;
}
else Hours++;
}
public void addminute ()
{
if (Minutes == 59)
{
Minutes = 0 ;
addhour () ;
}
else Minutes++;
}
public void addsecond ()
{
if (Seconds == 59)
{
Seconds = 0 ;
addminute () ;
}
else Seconds++;
}
public String toString(){
return "Time now is " + Hours + ":" + Minutes + ":" + Seconds;
}
public static void main (String[] args) {
Time t = new Time (23, 59, 59);
Time r = new Time (22, 59, 59);
System.out.println(t) ;
System.out.println(r) ;
t.addhour();
System.out.println(t) ;
t.addminute();
System.out.println(t) ;
t.addsecond() ;
System.out.println(t.toString());
}
}
输出是:现在
时间是23:59:59
现在时间是22时59分59秒
现在时间是零点59分59秒
现在时间是1:0:59
现在时间是1:1:0
“如果我调用toString方法上只是其中之一,将打印对象的内容通常“ - 请构建一个测试案例来证明这一点。 –
toString根本不打印任何东西。它仅返回实例的基于String的表示形式,并且可以打印该表示形式。 – Stultuske
您已覆盖'toString',因此当您打印对象时,将调用该代码。你期望什么? – assylias