上题回顾与解析
输出什么?
public class Question18 {
public static void main(String[] args){
String str = new String("test");
System.out.print(str.toString());
}
}
class String {
private final java.lang.String str;
String(java.lang.String str){
this.str = str;
}
@Override
public java.lang.String toString(){
return str;
}
}
//out
Exception in thread "main" java.lang.NosuchMethodError: main
解析:看起来应该打印"test",但结果是报错了,提示找不到main方法,main方法也没有写错。注意到了没,代码里String字符串类重用了java.lang.String的名称,导致了main方法接收参数时用的是我们所创建的String类,所以找不到mian方法。
本题教训:避免重用类名,尤其是java平台类的类名。
本系列的题是从[JAVA解惑]一书中挑选,大家可以去瞧瞧,不管是对初级还是高级程序员都有很大用处。
「每日一题」系列暂时先告一段落,因为题穷了。
敬请关注其他系列文章,依然每日更新哈~
坚持日更:3天