Java程序的输出 |第 12 组
1)以下程序的输出是什么?
public class Test implements Runnable
{
public void run()
{
System.out.printf("%d",3);
}
public static void main(String[] args) throws InterruptedException
{
Thread thread = new Thread(new Test());
thread.start();
System.out.printf("%d",1);
thread.join();
System.out.printf("%d",2);
}
}
一)123
b) 213
三)132
d) 321
Ans: (c)
解释:父线程使用join等待新创建的线程完成。 join() 方法允许一个线程等待,直到另一个线程完成其执行。因此,父线程打印 1 并等待子线程完成。子线程在控制台上打印 3,最后父线程打印 2。
2) 以下程序的输出是什么?
public class Test
{
private static int value = 20;
public int s = 15;
public static int temp = 10;
public static class Nested
{
private void display()
{
System.out.println(temp + s + value);
}
}
public static void main(String args[])
{
Test.Nested inner = new Test.Nested();
inner.display();
}
}
a) 编译错误
b) 1020
c) 101520
d) 以上都不是
Ans: (a)
说明:在静态嵌套内部类中不能访问非静态变量。 “嵌套”不能访问非静态变量[在这种情况下为变量 s]。因此错误:
10: error: non-static variable s cannot be referenced from a static context
System.out.println(temp + s + value);
^
3) 以下程序的输出是什么?
import java.io.*;
public class Test
{
public void display() throws IOException
{
System.out.println("Test");
}
}
class Derived extends Test
{
public void display() throws IOException
{
System.out.println("Derived");
}
public static void main(String[] args) throws IOException
{
Derived object = new Derived();
object.display();
}
}
一个测试
b) 派生的
c) 编译错误
d) 运行时错误
Ans: (b)
说明:如果超类方法声明了异常,子类覆盖的方法可以声明相同、子类异常或无异常但不能声明父异常。
4) 以下程序的输出是什么?
public class Test extends Thread
{
public void run()
{
System.out.printf("Test ");
}
public static void main(String[] args)
{
Test test = new Test();
test.run();
test.start();
}
}
a) 编译错误
b) 运行时错误
c) 测试
d) 测试测试
Ans: (d)
说明: test.run() 执行 run 方法。 test.start() 创建一个新线程并执行 Thread 类的重写 run 方法。 Thread.start() 方法总是启动一个新线程,这个线程的入口点是 run() 方法。如果您直接调用 run() ,它将在同一个线程中执行,但始终建议在逻辑上调用 Thread.start() 来启动一个新的执行线程,然后是 run() 方法。
5) 以下程序的输出是什么?
public class Test extends Thread
{
public static void main(String[] args)
{
String a = "GeeksforGeeks";
String b = new String(a);
int value = 0;
value = (a==b) ? 1:2;
if(value == 1)
{
System.out.println("GeeksforGeeks");
}
else if(value == 2)
{
System.out.println("Geeks for Geeks");
}
else
{
System.out.println("GFG");
}
}
}
a) GeeksforGeeks
b) 极客的极客
c) GFG
d) 以上都不是
Ans: (b)
说明: ==运算符检查两个变量是否引用同一个对象。这里 a 和 b
指两个不同的对象。 ?: 是 if else 语句的另一种形式,可以读作条件:如果为真,则执行此操作:否则执行此操作。
6) 以下程序的输出是什么?
public class Test
{
try
{
public Test()
{
System.out.println("GeeksforGeeks");
throw new Exception();
}
}
catch(Exception e)
{
System.out.println("GFG");
}
public static void main(String[] args)
{
Test test = new Test();
}
}
a) GeeksforGeeks
b)GFG
c) 编译错误
d) 以上都不是
Ans: (c)
说明:构造函数不能包含在 try/catch 块中。
7) 对于给定的代码,选择正确的答案。
public interface Test
{
public int calculate();
protected interface NestedInterface
{
public void nested();
}
}
a) 由于 NestedInterface 导致的编译时错误
b) 由于 NestedInterface 的访问修饰符导致编译时错误
c) 无编译时错误
d) NestedInterface 不能包含任何函数声明。
Ans: (b)
说明: NestedInterface 的访问修饰符只能是公共的。因此错误:
4: error: illegal combination of modifiers: public and protected
protected interface NestedInterface
^
1 error
8) 关于构造函数声明,下列哪项是正确的?
a) 构造函数可以被声明为 final。
b) 构造函数可以被 try/catch 块包围。
c) 构造函数不能抛出异常。
d) 构造函数可以保存同步代码(以便每个线程可以顺序访问构造函数)。
Ans: (d)
说明:构造函数允许在线程之间顺序访问数据。