1、Java 语言程序设计(一)真题 2016 年 10 月及答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:10,分数:10.00)1.在下述字符串中,不是 Java 语言关键字的是_(分数:1.00)A.intB.staticC.javaD.try2.要作下列数据类型转换,需进行强制类型转换才能实现的是_(分数:1.00)A.从 int 到 charB.从 int 到 longC.从 float 到 doubleD.从 byte 到 int3.在以下供选择的概念中,属于面向对象语言重要概念或机制的是_(分数:1.00)A.方法B.模块C.线程D.继承4.在下述
2、Java 程序代码中,能正确创建数组的是_(分数:1.00)A.int myA5=1,2,3,4,5;B.int myA=new int(5);C.int myA;myA=new int5;D.int myA=1,2,3,4,5,6;5.某 Java 程序的类 A 需要利用 Swing 创建无边框窗口,则 A 需要继承的类是_(分数:1.00)A.JWindowB.JAppletC.JFrameD.JDialog6.在以下供选的鼠标事件中,MouseMotionListener 接口能处理的是_(分数:1.00)A.按下鼠标键B.拖动鼠标C.鼠标进入D.鼠标松开7.在以下代码中,能正确创建 F
3、ont 对象的是_(分数:1.00)A.new Font(“宋体“,斜体,20);B.new Font(“楷体“,20,正常);C.new Font(“楷体“,Font.BOLD,18);D.new Font(“楷体“,18,Font. BOLD);8.某线程正处于运行状态,则在以下选项中,不可能是它的后继状态的是_(分数:1.00)A.就绪状态B.新建状态C.阻塞状态D.死亡状态9.某 Java 程序用类 JFileChooser 来实现打开和保存文件对话框。当对话框的返回值是JFileChooser.APPROVE_OPTION 时,程序进一步的工作是_(分数:1.00)A.用方法 get
4、Name()取得文件名称B.用方法 getPath()取得文件路径C.用方法 getFile()取得文件内容D.用方法 getSelectedFile()取得文件对象10.Java 语言实现 C/S 模式时,需要使用网络套接字,套接字的内容包括_(分数:1.00)A.IP 地址+端口号B.IP 地址+监控线程名C.监控线程名+端口号D.IP 地址+监控线程名+端口号二、第部分 非选择题(总题数:10,分数:20.00)11.一个 Java 小应用程序必须定义成一个子类,它的超类是 1。 (分数:2.00)12.在 Java 语言中,左移运算符是 1。 (分数:2.00)13.类 A 的成员变量
5、 x 的类型是类 B 的,则类 A 和类 B 之间的关系是 1。 (分数:2.00)14.以下代码: StringTokenizer pas=new StringTokenizer(“public static void,main“,“,“); System. out. println(“有单词“+pas.countTokens()+“个“); 的输出结果是 1。 (分数:2.00)15.在 JFrame 子类的构造方法中,代码 getContentPane()的作用是 1。 (分数:2.00)16.用 JScrollBar 创建一个垂直滚动条对象时,需要指定的常量是 1。 (分数:2.00)
6、17.在异或模式下绘图时,实际绘制的颜色是由 3 种颜色作特定的运算确定的:当前正要绘制的颜色、原先绘制的颜色以及 1。 (分数:2.00)18.处于运行状态的线程执行 yield()方法,该线程将进入 1 状态。 (分数:2.00)19.在 Java 语言中,客户端使用的套接字类是 1。 (分数:2.00)20.在 Java 语言中,DriverManager 类的作用是加载驱动程序和 1。 (分数:2.00)三、简答题(总题数:6,分数:18.00)21.已知整型变量 n,当 n 的值为 0 时,输出“正常”,否则输出“异常”。请写出使用 switch 语句实现此功能的代码。 (分数:3.
7、00)_22.请写出在类、方法、变量之前加上修饰字 final 的作用。 (分数:3.00)_23.请列举出能产生 ActionEvent 事件类型的 3 种组件。 (分数:3.00)_24.某程序用以下代码弹出一个对话框: int anwser=JOptionPane.showConfirmDialog(null,“确实要退出吗?“,“退出确认“, OptionPane.YES_NO_CANCEL_OPTION); 如果程序中 anwser 的值等于 CLOSED_OPTION,请写出用户对该对话框的操作内容。 (分数:3.00)_25.请写出用矩形类 Rectangle2D 创建对象 r
8、的代码,对象 r 的左上角坐标是(20,30),宽是 50,高是70。 (分数:3.00)_26.URL 对象的格式是:METHOD:/HOSTNAME:PORT/PATH/FILE,请写出其中 HOSTNAME 的意义。 (分数:3.00)_四、程序填空题(总题数:5,分数:20.00)27.方法 void moveZeroFront(int a)的功能是将数组中的所有值为 0 的元素都移到数组的前端,而把非 0 元素放于所有 0 的后面。 提示:顺序考察数组元素,当发现是非 0 时,就让该数留在原来位置,当发现是 0 时,就与前面的第一个非 0 数交换。变量 zero 表示移动过程中遇到的
9、 0 的个数。 void moveZeroFront(int a) for(int i=0,zero=0; 1;i+) if(ai=0) ai=azero,azero=0; 2; (分数:4.00)28.这里给出的是一个播放幻灯片小应用程序的部分代码。设幻灯片已由小应用程序的 init()方法装入内存,并存放于 myImage 数组中。currentImage 为要显示的幻灯片序号。 int currentImage; ImagemyImage; public void paint( 1g) if(myImagecurrentImage)!=null) g. 2(myImagecurrentI
10、mage,10,10, myImagecurrentImage.getWidth(this), myImagecurrentImage.getHeight(this),this); (分数:4.00)29.类 ShareData 用于管理多个线程共享数据 data。一些线程要减少 data,另一些线程要增加 data。由于 data 不可以是负值,修改 data 的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改 data 的线程调用,该方法在 data 修改结束后,还应通知其他等待进入这个方法的线程。class ShareData int data=0; sy
11、nchronized void modiData(int delta) if(delta+delta=0)data+=delta; else while(data+delta0) try 1; catch(InterruptedException e) data+=delta; 2; ShareData(int initData)data=initData; (分数:4.00)30.方法 void sumByLine(String f)的功能是为已知文件 f 创建缓冲式输入流,然后从文件逐行输入整数,求各行整数的和,并输出。 public void sumByLine(String f) Fi
12、leReader file=new FileReader(f); BufferedReader in=new 1(file); int n,sum,i; String s; try while(s= 2)!=null) StringTokenizer tokens=new StringTokenizer(s); n=tokens.countTokens(); sum=0; for(i=0;in;i+) sum+=Integer.parselnt(tokens. nextToken(); System.out.println(“/t“+String.valueOf(sum)+“/n“); in.
13、close(); catch(IOException ie)System.out.println(“/tI/O 出错!“); (分数:4.00)31.方法 readByURL(String urlName,JTextArea showArea)的功能是通过已知网址创建 URL 对象,获得URLConnection 对象,设置网络连接,然后以数据流方式读取网页内容,并在文本区 showArea 中显示。 public String readByURL(String urlName,JTextArea showArea) try URL url=new URL(urlName); URLConne
14、ction tc=url. 1; tc. 2; /*以下省略的代码完成的工作是:用 tc 获得网络连接的 InputStreamReader 类对象,并将该对象转化成为缓冲式输入对象。以后,就能按行读取网络文本数据。*/ catch(MalformedURLException e)e.printStackTrace(); catch(IOException e)e.printStackTrace(); (分数:4.00)五、程序分析题(总题数:5,分数:20.00)32.阅读下列程序,请写出该程序的运行结果。 class SuperClass public int getData()retur
15、n 4; class SubClass extends SuperClass public int getData()return 5; public class Test32 public static int fac(SuperClass s) int d=s.getData(); return d*(d+1)/2; public static void main(String args) System.out.println(“超类对象调用方法 fac():“+fac(new SuperClass(); System.out.println(“子类对象调用方法 fac():“+fac(n
16、ew SubClass(); (分数:4.00)_33.阅读下列程序,请写出该程序的运行结果。 public class Test33 public static void main(String args) System.out.println(makeNewString(“bjZ;“); public static String makeNewString(String oldStr) String s=new String(oldStr); charrepCh=“a“,“b“,“c“,“d“,“e“,“f“,“g“,“h“,“i“,“j“,“k“,“l“,“m“, “n“,“o“,“p“
17、,“q“,“r“,“s“,“t“,“u“,“v“,“w“,“x“,“y“,“z“; s=s.replace(repChrepCh.length-1,“%“); for(int i=repCh.length-2;1=0;i-) s=s.replace(repChi,repChi+1); s=s.replace(“%“,repCh0); return s; (分数:4.00)_阅读下列程序,请回答以下问题: import java.awt.*; import javax.swing.*; import java.awt.event.*; class MyFrame extends JFrame i
18、mplements ActionListener JTextField textF; JTextArea textA; MyFrame() Container con=getContentPane(); con.setLayout(new BorderLayout(); textF=new JTextField(10); textF.addActionListener(this); textA=new JTextArea(6,10); setSize(240,200); con.add(textF, “North“); con.add(textA,“Center“); setVisible(t
19、rue); public void actionPerformed(ActionEvent e) int n,d; if(e.getSource()=textF) n=Integer.parseInt(textF.getText(); if(n!=0) for(int k=1;k=Math.abs(n);k+) d=(int)(Math.random()*1000%1000); textA.append(“ “+d); if(k%5=0) textA.append(“/n“); else textF.setText(null); textA.setText(null); public clas
20、s Test34 public static void main(String args) new MyFrame(); (分数:4.00)(1).在文本框中输入-18,在文本区中会显示多少行整数,各行有几个数?(分数:2.00)_(2).在文本框中输入 0,界面又会发生什么?(分数:2.00)_阅读下列程序,请回答以下问题: import java.awt.*;import java.awt.event.*;import javax.swing.*; class MyFrame extends JFrame implements AdjustmentListener JScrollBar j
21、s; JLabel label; int size=20; String msg; MyFrame(String s,int x,int y,int w,int h) super(s); msg=s; Container con=getContentPane(); con.setLayout(new BorderLayout(); js=new JScrolIBar(JScrollBar.HORIZONTAL,20,10,1,210); js.addAdjustmentListener(this); con.add(js,BorderLayout.NORTH); label=new JLabe
22、l(msg); con.add(label,BorderLayout.CENTER); setBounds(x,y,w,h); setVisible(true); public void adjustmentValueChanged(AdjustmentEvent e) size=e.getValue(); Font f=new Font(“Courier“,Font. BOLD, size); label.setFont(f); public class Test35 public static void main(String args) new MyFrame(“可调组件测试程序“,20
23、0,200,500,200); (分数:4.00)(1).应用程序窗口中,有哪几个组件?(分数:2.00)_(2).当拖动滚动条滑块时,界面会有什么变化?(分数:2.00)_阅读下列程序,请回答以下问题: import java.awt.*;import javax.swing.*; public class Test36 extends JFrame public static void main(String args) new GraphicsDemo(320,250); class DrawPanel extends JPanel implements Runnable int x,y
24、,w,h,d; DrawPanel(int w,int h,int d) this.w=w;this.h=h;this.d=d; new Thread(this).start(); setBackground(Color.white); public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.red); g.fillOval(x+w/2, y+h/2,10,10); public void run() int seta=0;double r; int s=w/2; for(int i=1;
25、1=500;i+) r=s*Math.sin(2.0*seta/180.0*3.1415926);/r=sin(2seta) x=(int)(r*Math.cos(seta/180.0*3.1415926); y=(int) (r*Math.sin (seta/180.0*3.1415926).); repaint.(); seta=(seta+2)%360; System.out.println(“ “+i+“:“+x+“ “+y); try Thread.sleep(d); catch(InterruptedException e) class GraphicsDemo extends J
26、Frame GraphicsDemo(int w,int h) getContentPane ().add (new DrawPanel(w,h,30); setTitle (“线程演示“); setSize(w+30,h+50); setVisible(true); (分数:4.00)(1).程序是如何实现画面动态显示的?(分数:2.00)_(2).创建 DrawPanel 对象时,第 3 个参数的值增大或减小,对画面的显示有何影响?(分数:2.00)_六、程序设计题(总题数:2,分数:12.00)34.请编写方法 int countOddNum(inta),该方法的功能是求已知数组 a 中
27、奇数的个数。要求根据方法的功能写出方法的代码。 static int countOddNum(inta) (分数:6.00)_35.类 MenuWindow 对象构建如下图所示的框架窗口,窗口有一个菜单条,有“学习”和“工作”两个菜单,其中“学习”菜单含“Java 程序设计”菜单项;“工作”菜单含“项目设计”菜单项。窗口只有一个文本框,目的是用于显示菜单选择的结果。 注:以下是要求你编写的类 MenuWindow 的构造方法的部分代码。 (分数:6.00)_Java 语言程序设计(一)真题 2016 年 10 月答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:1
28、0,分数:10.00)1.在下述字符串中,不是 Java 语言关键字的是_(分数:1.00)A.intB.staticC.java D.try解析:2.要作下列数据类型转换,需进行强制类型转换才能实现的是_(分数:1.00)A.从 int 到 char B.从 int 到 longC.从 float 到 doubleD.从 byte 到 int解析:解析 自动转换只能是简单类型向复杂类型转换,不能从复杂的转换成简单的。即如下所示的从左到右转换:byteshortintlongfloatdouble。3.在以下供选择的概念中,属于面向对象语言重要概念或机制的是_(分数:1.00)A.方法B.模块
29、C.线程D.继承 解析:解析 面向对象程序设计语言引入许多概念和机制,包括抽象、对象、消息、类、继承、多态性等。4.在下述 Java 程序代码中,能正确创建数组的是_(分数:1.00)A.int myA5=1,2,3,4,5;B.int myA=new int(5);C.int myA;myA=new int5;D.int myA=1,2,3,4,5,6; 解析:5.某 Java 程序的类 A 需要利用 Swing 创建无边框窗口,则 A 需要继承的类是_(分数:1.00)A.JWindow B.JAppletC.JFrameD.JDialog解析:6.在以下供选的鼠标事件中,MouseMot
30、ionListener 接口能处理的是_(分数:1.00)A.按下鼠标键B.拖动鼠标 C.鼠标进入D.鼠标松开解析:解析 MouseMotionListener 接口能处理拖动鼠标和鼠标移动两种事件。7.在以下代码中,能正确创建 Font 对象的是_(分数:1.00)A.new Font(“宋体“,斜体,20);B.new Font(“楷体“,20,正常);C.new Font(“楷体“,Font.BOLD,18); D.new Font(“楷体“,18,Font. BOLD);解析:解析 在 Java 语言中,用类 Font 对象设置字型。Font 类的构造方法有:Font(String f
31、ontName, int style, int size),3 个参数分别表示字体、风格和字号。其中,常用的风格有三种:正常、粗体和斜体,分别用三个常量表示:Font.PLAIN(正常)、Font.BOLD(粗体)和 Font.ITALIC(斜体)。8.某线程正处于运行状态,则在以下选项中,不可能是它的后继状态的是_(分数:1.00)A.就绪状态B.新建状态 C.阻塞状态D.死亡状态解析:9.某 Java 程序用类 JFileChooser 来实现打开和保存文件对话框。当对话框的返回值是JFileChooser.APPROVE_OPTION 时,程序进一步的工作是_(分数:1.00)A.用方法
32、 getName()取得文件名称B.用方法 getPath()取得文件路径C.用方法 getFile()取得文件内容D.用方法 getSelectedFile()取得文件对象 解析:解析 当对话框的返回值是 JFileChooser.APPROVE_OPTION 时,程序就可以利用getSelectedFile()方法取得文件对象,并利用这个文件对象用方法 getName()取得文件的名称,用方法getPath()取得文件的路径。10.Java 语言实现 C/S 模式时,需要使用网络套接字,套接字的内容包括_(分数:1.00)A.IP 地址+端口号 B.IP 地址+监控线程名C.监控线程名+端
33、口号D.IP 地址+监控线程名+端口号解析:解析 在客户机/月艮务器工作模式中,在 Server 端,要准备接受多个 Client 端计算机的通信。为此,除用 IP 地址标识 Internet 上的计算机之外,另还引入端口号,用端口号标识正在 Server 端后台服务的线程。端口号与 IP 地址的组合称为网络套接字(socket)。二、第部分 非选择题(总题数:10,分数:20.00)11.一个 Java 小应用程序必须定义成一个子类,它的超类是 1。 (分数:2.00)解析:Applet12.在 Java 语言中,左移运算符是 1。 (分数:2.00)解析:13.类 A 的成员变量 x 的类
34、型是类 B 的,则类 A 和类 B 之间的关系是 1。 (分数:2.00)解析:has-a14.以下代码: StringTokenizer pas=new StringTokenizer(“public static void,main“,“,“); System. out. println(“有单词“+pas.countTokens()+“个“); 的输出结果是 1。 (分数:2.00)解析:有单词 4 个15.在 JFrame 子类的构造方法中,代码 getContentPane()的作用是 1。 (分数:2.00)解析:获得 JFrame 子类对象的内容面板16.用 JScrollBar
35、 创建一个垂直滚动条对象时,需要指定的常量是 1。 (分数:2.00)解析:JScrollBar.VERTICAL17.在异或模式下绘图时,实际绘制的颜色是由 3 种颜色作特定的运算确定的:当前正要绘制的颜色、原先绘制的颜色以及 1。 (分数:2.00)解析:模式设定的颜色18.处于运行状态的线程执行 yield()方法,该线程将进入 1 状态。 (分数:2.00)解析:就绪19.在 Java 语言中,客户端使用的套接字类是 1。 (分数:2.00)解析:Socket20.在 Java 语言中,DriverManager 类的作用是加载驱动程序和 1。 (分数:2.00)解析:建立与新数据库的
36、连接三、简答题(总题数:6,分数:18.00)21.已知整型变量 n,当 n 的值为 0 时,输出“正常”,否则输出“异常”。请写出使用 switch 语句实现此功能的代码。 (分数:3.00)_正确答案:()解析:switch(n) case 0:System.out.println(“正常“);break; default:System.out.println(“异常“); 22.请写出在类、方法、变量之前加上修饰字 final 的作用。 (分数:3.00)_正确答案:()解析:用 final 修饰类,声明该类是不能被再继承的类。 用 final 修饰方法,声明该方法不能被子类的方法覆盖。
37、 用 final 修饰变量,声明该变量的值不能被改变。23.请列举出能产生 ActionEvent 事件类型的 3 种组件。 (分数:3.00)_正确答案:()解析:JButton、JCheckBox、JComboBox、JMenultem、JRadioButton24.某程序用以下代码弹出一个对话框: int anwser=JOptionPane.showConfirmDialog(null,“确实要退出吗?“,“退出确认“, OptionPane.YES_NO_CANCEL_OPTION); 如果程序中 anwser 的值等于 CLOSED_OPTION,请写出用户对该对话框的操作内容。
38、(分数:3.00)_正确答案:()解析:用户直接关闭对话窗口25.请写出用矩形类 Rectangle2D 创建对象 r 的代码,对象 r 的左上角坐标是(20,30),宽是 50,高是70。 (分数:3.00)_正确答案:()解析:Rectangle2D r=new Rectangle2D.Double(20 ,30 ,50 ,70);26.URL 对象的格式是:METHOD:/HOSTNAME:PORT/PATH/FILE,请写出其中 HOSTNAME 的意义。 (分数:3.00)_正确答案:()解析:HOSTNAME 是文档和服务器所在的 Internet 主机名或 IP 地址。四、程序填
39、空题(总题数:5,分数:20.00)27.方法 void moveZeroFront(int a)的功能是将数组中的所有值为 0 的元素都移到数组的前端,而把非 0 元素放于所有 0 的后面。 提示:顺序考察数组元素,当发现是非 0 时,就让该数留在原来位置,当发现是 0 时,就与前面的第一个非 0 数交换。变量 zero 表示移动过程中遇到的 0 的个数。 void moveZeroFront(int a) for(int i=0,zero=0; 1;i+) if(ai=0) ai=azero,azero=0; 2; (分数:4.00)解析:ia.length zero+28.这里给出的是一
40、个播放幻灯片小应用程序的部分代码。设幻灯片已由小应用程序的 init()方法装入内存,并存放于 myImage 数组中。currentImage 为要显示的幻灯片序号。 int currentImage; ImagemyImage; public void paint( 1g) if(myImagecurrentImage)!=null) g. 2(myImagecurrentImage,10,10, myImagecurrentImage.getWidth(this), myImagecurrentImage.getHeight(this),this); (分数:4.00)解析:Graphi
41、cs drawImage29.类 ShareData 用于管理多个线程共享数据 data。一些线程要减少 data,另一些线程要增加 data。由于 data 不可以是负值,修改 data 的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改 data 的线程调用,该方法在 data 修改结束后,还应通知其他等待进入这个方法的线程。class ShareData int data=0; synchronized void modiData(int delta) if(delta+delta=0)data+=delta; else while(data+delta0) try 1; catch(InterruptedException e) data+=delta; 2; ShareData(int initData)data=initData; (分数:4.00)解析:wait() notify()30.方法 void sumByLine(String f)的功能是为已知文件 f 创建缓冲式输入流,然后从文件逐行输入整数,求各行整数的和,并输出。 public void sumByLine(String f) FileReader file=new FileReader