考虑以下代码:
public class foo{
static class Node{
Object item;
Node next;
Node(Object item, Node next) {
this.item = item;
this.next = next;
}
}
public static void main(String[] args) {
Node data = null;
data = new Node("hello", data);
data = new Node(5, data);
while (data!=null){
String s = (String) data.item;
System.out.println(s);
}
}
}
这是一个选择题,答案是“此代码将成功编译,但运行时会崩溃”。
为什么?
它在哪里崩溃?
答案 0 :(得分:3)
首先,您正在将data.item
投射到String
。这将产生:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
第二,就像@GBlodgett指出的那样,变量数据永远不会在循环内更新。
while (data != null){
String s = (String) data.item;
System.out.println(s);
}