1、二级 JAVA 机试-118 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)请完善程序(程序文件名:Java_1.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求请完善程序并进行调试,使程序输出结果如下图所示。(分数:30.00)填空项 1:_填空项 1:_二、2简单应用题(总题数:1,分数:40.00)请完善程序(程序文件名:Java_2.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求在主线程中创建了一个线程,该线程
2、休眠 50ms,然后给变量 i 赋值。主线程要等该子线程结束后获得并输出 i 的值,使程序的输出结果如下:j=10,a.i=10源程序:public class Java_2 public static void main(String args) try Sleep a=new Sleep();Thread t=new Thread(a);t. (1) ();t.join();int J=a.i;System.out.println(“j=“+j+“,a.i=“+a.i);catch(Exception e) class Sleep implements Runnable int i;pub
3、lic void run() try Thread (2) (50);i=10;catch(InterruptedException e) (分数:40.00)填空项 1:_填空项 1:_三、3综合应用题(总题数:1,分数:30.00)请完善程序(程序文件名:Java_3.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求阅读 Java_3.java 程序,该程序的功能是判断用户以命令行方式输入的类名是否在 Java 类中。完成程序的编写,运行所得结果为:java.lang.Name 不在 Java 类库中。源程序:/程序的功能是,判断
4、用户以命令行方式使用键盘输入的路径类名是否在 Java 类库中public class Java_3 public static void main(String args) String className;if(args.length0) className=args0;else className=“java.lang.Name“;(1) Class e=Class.forName( (2) );System.out.println(className+“是 Java 类库中已有的类。“);catch(ClassNotFound (3) e) System.out.println(cla
5、ssName+“不在 Java 类库中。“);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二级 JAVA 机试-118 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)请完善程序(程序文件名:Java_1.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求请完善程序并进行调试,使程序输出结果如下图所示。(分数:30.00)填空项 1:_ (正确答案:s1 equals/“hello/“/n)解析:解析 由程序和输出结果可以看出此处输出语句为 s1 equals/“he
6、llo/“/n,其中“/“”转义输出“”。由程序中 else-的输出也可以推断出内容为此。填空项 1:_ (正确答案:showMessageDialog)解析:解析 用对话框输出,详细解析可参见第 2 套题的综合应用题。程序解析 本程序主要是比较字符串,然后用对话框输出结果。涉及几个方法:(1) public boolean equals(Object anObject)将此字符串与指定的对象比较。如果相等,则返回true;否则返回 false。(2) public boolean equalsIgnoreCase(String anotherString)将此 String 与另一个 Str
7、ing 进行比较,不考虑大小写。如果两个字符串的长度相等,并且两个字符串中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。(3) public int compareTo(String anotherString)按字典顺序比较两个字符串。如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。(4) 用“=”比较两个字符串对象,只有指向的是同一个对象时才返回真。二、2简单应用题(总题数:1,分数:40.00)请完善程序(程序文件名:Java_2.java)并进行调试
8、。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求在主线程中创建了一个线程,该线程休眠 50ms,然后给变量 i 赋值。主线程要等该子线程结束后获得并输出 i 的值,使程序的输出结果如下:j=10,a.i=10源程序:public class Java_2 public static void main(String args) try Sleep a=new Sleep();Thread t=new Thread(a);t. (1) ();t.join();int J=a.i;System.out.println(“j=“+j+“,a.i=“+a.i);
9、catch(Exception e) class Sleep implements Runnable int i;public void run() try Thread (2) (50);i=10;catch(InterruptedException e) (分数:40.00)填空项 1:_ (正确答案:start)解析:解析 由于创建了线程 t,但是 t 不能自动运行,需要 start()方法使 t 可运行。所以此处应填start。填空项 1:_ (正确答案:sleep)解析:解析 题目要求中提到该线程休眠 50ms,然后给变量赋值,所以此处应填让线程休眠的方法sleep。程序解析 本程序
10、通过实现 Runnable 接口重写 run()方法创建线程 t。在此程序中用到了 3 个方法:(1) start()刚创建的线程 t 不会自动运行,需要 start 方法把嵌入线程中的虚拟 CPU 置为可运行状态,意味着线程可被调度执行。(2) t.join()使当前的线程等待,直到 t 结束为止,线程恢复到可运行状态。(3) sleep()该方法使一个线程暂停一段固定时间。三、3综合应用题(总题数:1,分数:30.00)请完善程序(程序文件名:Java_3.java)并进行调试。请在下画线处填入正确内容,然后删除下画线。请勿删除注释行和其他已有的语句内容。题目要求阅读 Java_3.jav
11、a 程序,该程序的功能是判断用户以命令行方式输入的类名是否在 Java 类中。完成程序的编写,运行所得结果为:java.lang.Name 不在 Java 类库中。源程序:/程序的功能是,判断用户以命令行方式使用键盘输入的路径类名是否在 Java 类库中public class Java_3 public static void main(String args) String className;if(args.length0) className=args0;else className=“java.lang.Name“;(1) Class e=Class.forName( (2) );S
12、ystem.out.println(className+“是 Java 类库中已有的类。“);catch(ClassNotFound (3) e) System.out.println(className+“不在 Java 类库中。“);(分数:30.00)填空项 1:_ (正确答案:try)解析:解析 由于后面的程序中有 catch 语句而没有 try,所以此处应填 try。填空项 1:_ (正确答案:className)解析:解析 其中用到了方法 public static Class forName(String className) throws ClassNotFoundExcept
13、ion 返回与带有给定字符串名的类或接口相关联的 Class 对象。如果找不到类则会抛出 ClassNotFoundException 异常。根据方法的说明可以看出这里是类名的字符串,而程序中又定义了类名变量 className,所以下画线处应该填变量名 className。填空项 1:_ (正确答案:Exception)解析:解析 其中用到了方法 public static Class forName(String className) throws ClassNotFoundException 返回与带有给定字符串名的类或接口相关联的 Class 对象。如果找不到类则会抛出 ClassNotFoundException 异常。根据方法的说明可以看出这里是类名的字符串,而程序中又定义了类名变量 className,所以下画线处应该填变量名 className。程序解析 本程序通过命令行输入获取参数,看一个类是否在 Java 类库中,其中考查异常的处理。