Java程序的输出|设置 6
难度级别:中级
预测以下Java程序的输出。
方案一:
class First
{
public First() { System.out.println("a"); }
}
class Second extends First
{
public Second() { System.out.println("b"); }
}
class Third extends Second
{
public Third() { System.out.println("c"); }
}
public class MainClass
{
public static void main(String[] args)
{
Third c = new Third();
}
}
输出:
a
b
c
解释:
在创建'Third'类型的新对象时,在调用Third类的默认构造函数之前,调用超类的默认构造函数,即Second class,然后再次在超类的默认构造函数之前,调用First类的默认构造函数.因此给出了这样的输出。
方案二:
class First
{
int i = 10;
public First(int j)
{
System.out.println(i);
this.i = j * 10;
}
}
class Second extends First
{
public Second(int j)
{
super(j);
System.out.println(i);
this.i = j * 20;
}
}
public class MainClass
{
public static void main(String[] args)
{
Second n = new Second(20);
System.out.println(n.i);
}
}
输出:
10
200
400
解释:
由于在“第二”类中它没有自己的“i”,因此该变量是从超类继承的。此外,当我们创建 Second 对象时,会调用 parent 的构造函数。
方案 3:
import java.util.*;
class I
{
public static void main (String[] args)
{
Object i = new ArrayList().iterator();
System.out.print((i instanceof List) + ", ");
System.out.print((i instanceof Iterator) + ", ");
System.out.print(i instanceof ListIterator);
}
}
输出:
false, true, false
解释:
iterator() 方法以正确的顺序返回列表中元素的迭代器,它不返回 List 或 ListIterator 对象。 ListIterator 可以通过调用 listIterator 方法获得。
程序 4:
class ThreadEx extends Thread
{
public void run()
{
System.out.print("Hello...");
}
public static void main(String args[])
{
ThreadEx T1 = new ThreadEx();
T1.start();
T1.stop();
T1.start();
}
}
输出:
Run Time Exception
解释:
Java .lang.Thread.start 处的线程“主” Java .lang.IllegalThreadStateException 中的异常
线程不能启动两次。