在下面的代码中,我添加了两行打印输出。第一行像往常一样打印垃圾,但令人惊讶的是第二行给了我一个编译错误。为什么呢?
class Student {
private String name;
public Student(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class StudentServer {
public StudentServer(){
Student[] s = new Student[30];
s[0] = new Student("Nick");
// LINE 01: This compiles, although prints junk
System.out.println(s[0]);
// LINE 02: I get a error called cannot find symbol
System.out.println(s[0].getName());
}
public static void main(){
new StudentServer();
}
}
答案 0 :(得分:2)
试试这个:
public static void main(String[] args)
答案 1 :(得分:2)
main
方法不是正确的应用程序入口点的问题,这段代码应该编译并运行得很好。问题似乎在于其他地方,目前还没有足够的信息来确定来源。
toString()
打印s[0]
“像往常一样打印垃圾”的原因是因为您没有@Override
从toString()
继承的Object
方法。
如果您刚刚添加了此方法:
@Override public String toString() {
return "Student : " + name;
}
然后打印s[0]
不会打印“垃圾”;它将打印上述toString()
返回的任何内容(在这种情况下,这是合理的“非垃圾”)。