难度级别: 中级
程序
程序一
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); } }
a) 123
b) 213
c) 132
d) 321
程序二
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) 以上都不是
程序三
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(); } }
a) 测试
b) 派生
c) 编译错误
d) 运行时错误
程序四
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) Test
d) Test Test
程序五
5) 以下程序的输出是什么?
public class Test extends Thread { public static void main(String[] args) { String a = "Haiyong"; String b = new String(a); int value = 0; value = (a==b) ? 1:2; if(value == 1) { System.out.println("Haiyong"); } else if(value == 2) { System.out.println("Blog"); } else { System.out.println("HY"); } } }
a) Haiyong
b) Blog
c) HY
d) 以上都不是
程序六
6) 以下程序的输出是什么?
public class Test { try { public Test() { System.out.println("Haiyong"); throw new Exception(); } } catch(Exception e) { System.out.println("HY"); } public static void main(String[] args) { Test test = new Test(); } }
a) Haiyong
b) HY
c) 编译错误
d) 以上都不是
程序七
7) 对于给定的代码,选择正确的答案。
public interface Test { public int calculate(); protected interface NestedInterface { public void nested(); } }
b)由于 NestedInterface 的访问修饰符导致的编译时错误
c) 没有编译时错误
d) NestedInterface 不能保存任何函数声明。
程序八
8) 下列关于构造函数声明的说法正确的是?
a) 构造函数可以声明为 final。
b) 构造函数可以被 try/catch 块包围。
c) 构造函数不能抛出异常。
d) 构造函数可以持有同步代码(以便每个线程可以顺序访问构造函数)。
文章后半部分是程序的输出及解析
输出及解析
程序一输出
答案:
(c)
说明:
父线程使用join等待新创建的线程完成。join()方法允许一个线程等待另一个线程完成它的执行。因此,父线程打印 1 并等待子线程完成。子线程在控制台上打印 3,最后父线程打印 2。
程序二输出
答案:
(a)
说明:
不能在静态嵌套内部类中访问非静态变量。“嵌套”不能访问非静态变量[在这种情况下是变量]。因此错误:
10:错误:不能从静态上下文中引用非静态变量 s System.out.println(temp + s + value); ^
程序三输出
答案:
(b)
说明:
如果超类方法声明了异常,子类覆盖的方法可以声明相同、子类异常或不声明异常,但不能声明父类异常。
程序四答案
回答 :
(d)
说明:
test.run() 执行 run 方法。test.start() 创建一个新线程并执行 Thread 类的重写 run 方法。Thread.start() 方法总是启动一个新线程,这个线程的入口点是 run() 方法。如果您直接调用 run() 它将在同一个线程中执行,但始终建议在逻辑上调用 Thread.start() 以启动一个新的执行线程,然后是 run() 方法。
程序五答案
回答 :
(b)
说明:
== 运算符检查两个变量是否指向同一个对象。这里 a 和 b指的是两个不同的对象。?: 是 if else 语句的另一种形式,可以理解为,condition : if true then do this : else do this。
程序六答案
回答 :
(c)
说明:
构造函数不能包含在 try/catch 块中
程序七答案
回答 :
(b)
说明:
NestedInterface 的访问修饰符只能是公共的。因此错误:
4:错误:修饰符的非法组合:公共和受 保护的受保护接口 NestedInterface ^ 1 错误
程序八答案
回答 :
(d)
说明:
构造函数允许在线程之间顺序访问数据。
以上就是本篇文章的所有内容了