public class test
{
public static void main (String[ ] args )
{
TheClass one = new TheClass(); constructor
TheClass two = new TheClass(str , doubleNum); // I: calling the parameter constructor to //pass: “David William” and 3.5 to the object
System.out.println( one );
System.out.println( two );
// call the method staticMethod
System.out.print(two.staticMethod());
}
}
class TheClass
{
private String str;
private static int intNum = 0;
private double doubleNum ;
public TheClass()
{
str = "unknown";
doubleNum = 0.0;
}
public TheClass (String s, double d)
{
str = s;
doubleNum = d;
}
public static void staticMethod ()
{
intNum ++;
}
}
执行“System.out.println(one);”是否有意义&安培; “System.out.println(two);”既然他们只是建设者? 这两条线的输出是什么?
答案 0 :(得分:1)
由于您尚未定义toString()
方法,因此“打印”您的类实例的输出对人类无用。
假设您定义了一个有意义的toString()
方法,打印刚刚构造的对象的概念没有任何问题,例如:
System.out.println( new TheClass(str , doubleNum) );
这只意味着你不会在该行之后引用该对象(因此它可用于垃圾收集)。
尝试相同的代码,但将此方法添加到您的课程中:
@Override
public String toString() {
return str + " " + doubleNum;
}
答案 1 :(得分:0)
如果该类具有重写的toString()
实现,那么将使用该实现,并且将打印出该实现返回的任何字符串。否则,JVM将尝试查看是否可以为该类的祖先找到toString()
实现并使用它。
最后,也就是说,如果JVM无法找到.toString()
的合适重写实现,则调用Object#toString()
(Java中的每个类都派生自Object
)。这导致输出不是很有用。