1、2008 年 10 月全国自考 Java 语言程序设计(一)真题答案 一、单项选择题 1:参考答案:D参考解析:(P8)本题考核知识点是 Java 语言标识符命名规则。 Java 语言标识符可以按以下规则任意命名: 由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。 限定标识符的第一个字符不能是数字字符。 选项 D 答案第一个字符是数字字符。 2:参考答案:A参考解析:(P14)本题考核知识点是 Java 算术运算符 “/”。 “/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。所以当 x=53 时,x/2=26。 3:参考答案:B参考解析:(P46)
2、本题考核知识点是实例变量、类变量、局部变量。 类的成员变量分为实例变量和类变量。在定义成员变量时,用关键字 static 修饰的是类变量,定义时未用 static 修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不属于类的某个对象。引用类变量的途径有两条,或通过类,或通过对象。类的方法体中定义的变量称为局部变量,方法参数也属于局部变量。4:参考答案:C参考解析:(P77)本题考核知识点是 StringTokenizer 类。 java.util 包中的类 StringTokenizer 用于语言符号(单词)的分析,分析出字符串中的单词。另外还有命
3、名的习惯约定(行业习惯,不是规定):一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。5:参考答案:D参考解析:(P91)本题考核知识点是 JFrame 类和关键字 super。 在用 Swing 编写 GUI 程序时,通常不直接用 JFrame 创建窗口对象,而用 JFrame 派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容,这时可以使用超类的构造方法完成窗口的标题设置即 super(s)。选项 C 完整的使用形式可以这样: JFrame myWin=new JFr
4、ame(s)/创建 JFrame 窗口对象 myWin,标题是 s 但这样不符合本题题干“为程序的子窗口设定标题”的要求。 6:参考答案:A参考解析:(P118) 7:参考答案:B参考解析:(P137)本题考核知识点是字型要素。 Java 的文字字型有三个要素:字体、风格和字号。常用的字体有 Times New Roman、Symbol 、宋体和楷体等。常用的风格有正常、粗体和斜体,分别用三个常量表示:Font.PLAIN、Font.BOLD 和 Font.ITALIC,风格可以组合使用。字号是字的大小,单位是磅。8:参考答案:D参考解析:(P162)本题考核知识点是多线程。 在 Java 中
5、实现多线程一般情况下是先声明 Thread 类的子类,在子类中重载 run()方法,然后创建这个子类的实例,让线程调用 start()方法。 9:参考答案:C参考解析:(P175)本题考核知识点是输入输出流。 为 Java 的 8 位字节流数据的读和写操作提供支持的类分别是 FileInputStream 类和 FileOutputStream 类,它们分别是InputStream 类和 OutputStream 类的子类;为 Java 的 16 位 Unicode 字符流数据的读和写操作提供支持的类分别是 FileReader 类和 FileWriter 类,它们分别是 Reader 类和
6、Writer 类的子类。10:参考答案:A参考解析:(P191)本题考核知识点是 Java 网络编程。 要接收和发送信息需用 URLConnection 类,程序获得一个 URLConnection 对象,相当于完成对指定 URL 的一个 HTTP 连接。程序有了 URLConnection 对象后,就可使用URLConnection 类提供的方法获得流对象和实现网络连接。二、填空题 1:参考答案:(P5)Applet(JApplet) 类的子类 解析本题考核知识点是小应用程序。 一个小应用程序必须定义成一个 Applet 类的子类或 JApplet 类的子类。试题内容:一个小应用程序必须定义
7、成一个_。2:参考答案:解析(P16)试题内容:用条件运算符构造一个表达式:goal 等于 10 时,表达式的值为“对了!“ ,否则,表达式的值为“错了! “。这个表达式是_。3:参考答案:(P40)数据(属性)和方法(函数) 解析本题考核知识点是类的概念。 类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。试题内容:类是对一组相同对象的描述,类概括了同类对象的共有性质:_。4:参考答案:(P45)回收内存 解析本题考核知识点是数组。 Java 语言根据相应类型变量采用直接访问还是间接访问,把类型分成基本类型和引用类型,数组类型和类类型是引用类型。数组进行整体赋值,其实
8、是数组首地址的赋值,原来地址空间会自动释放。试题内容:设有数组 a 和 b 的定义如下: int a=1,2,3;int b=4,5,6 执行以下代码“a=b;“,除了完成赋值操作之外,引起系统额外要做的工作是_。5:参考答案:(P100)CardLayout 解析本题考核知识点是布局设计。 常用的布局类:FlowLayout 为依次放置组件;BorderLayout 将组件放置在边界上; CardLayout 将组件像扑克牌一样叠放,而每次只能显示其中的一个组件;GridLayout将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中;GridBagLayout 能进行更精细
9、的位置控制。试题内容:_布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。6:参考答案:(P127)MouseListener 我的答案:试题内容:Java 语言为处理鼠标事件提供两个接口:_ 接口和 MouseMotionListener接口。7:参考答案:(P140)黄色 解析本题考核知识点是绘图模式。 当绘图模式设置为异或模式时,用背景色绘图出现的是异或的颜色,重画一个图形将清除图形。试题内容:某个绘图方法设置成“异或模式“ 绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_。8:参考答案:(P161)run() 解析本
10、题考核知识点是多线程。 Java 程序实现多线程应用有两种途径:一是继承 Thread 类声明 Thread 子类,用Thread 子类创建线程对象。二是在类中实现 Runnable 接口,在类中提供 Runnable 接口的 run()方法。无论用哪种方法,都需要 Java 基础类库中的 Thread 类及其方法的支持。程序员能控制的关键性工作只有两个方面,一是编写线程的 run()方法;二是建立线程实例。试题内容:程序员用 Java 语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_方法;二是建立线程实例。9:参考答案:(P179)FileWriter 解析本题考
11、核知识点是缓冲式输出。 实现缓冲式输出,需要将 FileWriter 对象接到 BufferedWriter 对象上,对BufferedWriter 对象使用 write()方法就能实现缓冲式输出。试题内容:BufferedWriter 类是提供缓冲式输出的类。程序需要先创建_对象,再利用这个对象创建 BufferedWriter 对象。10:参考答案:(P193)Socket 解析本题考核知识点是 Java 网络编程。 Java 语言在实现 C/S 模式中,套接字分为两类,在 Server 端使用 ServerSocker 类,在Client 端使用 Socket 类。试题内容:在 Java
12、 语言中,客户端使用的套接字类是_ 。三、简答题 (本大题共 6 小题,每小题 3 分,共 18 分)1:参考答案:(P15)(x=2)!=(y=3)或(x=2y!=3)|(x!=2y!=3)我的答案:2:参考答案:(P57)Student s1=new Person(); Undergraduate ug1=new Person(); Undergraduate ug2=new Student(); 解析本题考核知识点是类之间的 is-a 关系。在两个相关的类之间,可能会有 is-a和 has-a 关系。若类 A 是继承扩展类 B,则子类 A 和超类 B 之间是 is-a 关系,即类A 是一
13、个类 B。这种情况下,A 类对象一定可以是 B 类类型,因为 B 类的所有成员A 类也有。也就是子类对象可以是超类类型。语句 B b=new A()是正确的,A a=new B()是错误的。 3:参考答案:(P102)为对象添加监视器的方法是 addActionListener;类必须实现的方法是public void actionPerformed(ActionEvent e)。 解析本题考核知识点是文本框输入结束动作事件(回车) 。 文本框输入结束动作事件相应的监视器接口为 ActionListener,要实现的接口方法是actionPerformed(),添加监视器的方法是 addAct
14、oinListener()。 4:参考答案:(P140)g.drawLine(20,30,120,30); 或 g.drawLine(120,30,20,30); 解析本题考核知识点是画线段。 方法中有四个参数分别表示线段的两个端点坐标,当两个端点坐标相同时,将画出一个点,而不再是线段。 5:参考答案:(P175)import java.io.*; 解析本题考核知识点是文件输入输出流。 实现输入输出操作的类库在 java.io 包中。包中有一组支持打开流、向流写数据、从流读取数据和关闭流等操作的类,要使用这些类,程序必须导入 java.io 包。 6:参考答案:(P199)与某个数据库建立连接
15、;向数据库发送 SQL 语句;处理数据库返回的结果。 解析本题考核知识点是 java 数据库编程基础。 Java 数据库连接 JDBC 由一组用 Java 语言编写的类和接口组成,JDBC 是 Java 程序与数据库连接的 API。它可以做三件事情。四、程序填空题 (本大题共 5 小题,每空 2 分,共 20 分)1:参考答案:n%10 return c 解析本题考核知识点是%运算符和 return 语句。 方法中 d 为循环分离出整数 n 的每一位数字(每次取 n 的个位数字,n 也在变化:n/=10) ,在找出最大的数字后存入了变量 c 中,因方法有返回值类型为 int,所以必须有 ret
16、urn 语句,要返回最大数字。,2:参考答案:getText() sum+=ai或 sum=sum+ai 解析本题考核知识点是图形界面设计中按钮事件方法的编写。 获取文本框中的内容使用的方法是 getText(),方法名首字母均小写,后面单词首字母大写。获取整数序列后,使用单词分析器分解出每个整数(有类型转换过程)存入数组 a 中,然后对所有整数进行求和。,3:参考答案:JMenuItem getActionCommand 解析本题考核知识点是菜单。 生成菜单条是用类 JMenuBar 的构造方法 JMenuBar(),把菜单条放入 JFrame 窗口中用setJMenuBar()方法;生成菜
17、单用类 JMenu 的构造方法 JMenu()或 JMenu(String s);生成菜单项用类 JMenuItem 的构造方法 JMenuItem()或 JMenuItem(String s)。在菜单事件中获得事件源的方法是 getSource(),获得事件源文字信息的方法是getActionCommand()。4:参考答案:Graphics repaint()或 update() 解析本题考核知识点是小应用程序中 paint()和 repaint()方法的使用。 paint()方法需要 Graphics 类型参数,当单击鼠标时,要在 paint()方法中再次显示图片,可以调用 repain
18、t()方法,使程序先清除 paint()运行的结果,再运行 paint();也可以调用update()方法,该方法会使系统自动调用 repaint()方法。5:参考答案:synchronized notify() 解析本题考核知识点是线程的互斥和同步。 在 Java 语言中,使用关键字 synchronized 定义临界段,能对共享对象的操作上锁,使得某一时刻只允许一个线程使用这个共享对象。但是为了同步,可在临界段中使用wait()、notify() 和 notifyAll()方法。wait()让线程一直等待,notify()方法通知第一个处于等待的线程结束等待。notifyAll()方法使所
19、有处于等待的线程都结束等待,重新竞争CPU。五、程序分析题 (本大题共 5 小题,每小题 4 分,共 20 分)1:参考答案:yuan Circle 62.8(2 分) yuan Area 314.0(2 分)我的答案:2:参考答案:程序获得当前日期,将日期的字符串表示输出;(2 分)截取日期字符串中从第 11 位开始到字母C 之前的部分字符串,并输出。 (2 分) 3:参考答案:在第一个文本框输入数据,输入结束(回车)后, (2 分)在第二个文本框输出该整数的平方。 (2 分)4:参考答案:滑动滚动条的滑块,在文本框显示块位置对应的数值。 5:参考答案:随机位置显示一个小圆,程序采用背景色重
20、画的办法,清除前一次显示的小圆。 解析本题考核知识点是图形绘制和线程综合应用。 在 run()方法中随机产生一个坐标点,以此为左上角坐标,红色填充一个小圆形区域,500 毫秒后,用背景色填充同一个小圆形区域,使红色小圆形区域消失,马上又随机产生一个坐标点,再红色填充,再消失,循环不止。我的答案:六、程序设计题 (本大题共 2 小题,每小题 6 分,共 12 分)1:参考答案:int halfArray(int a)(1 分) int b=new inta.length;(2 分) for(int k=0;ka.length;k+)(2 分) bk=ak/2; return b;(1 分) 解析
21、本题考核知识点是面向对象程序设计中的方法设计。 编写方法,需要确定方法名,已给出 halfArray;再确定参数个数及类型,要求是一个int 型数组参数即 halfArray(int );再就是确定方法返回值类型,要求返回一个新数组,新数组元素类型要确定下来,根据题意,新数组元素是参数数组相应元素的一半,这一半应该可能是小数,所以方法头应该为 floathalfArray(int )而不应该是 int halfAray(int ),方法体中的一半也应该是除以 2.0。并转换成 float 类型,方法体定义的数组 b也应该是 float 类型。或者返回值类型和数组 b 的类型都定义成 doubl
22、e 类型。2:参考答案:long n1,n2;(1 分) if(e.getSource()=(panel.addButton)(3 分) n1=Long.parseLong(panel.text1.getText(); n2=Long.parseLong(Panel.text2.getText(); panel.text3.setText(String.valueOf(n1+n2); else if(e.getSource()=(panel.subButton)(2 分) n1=Long.parseLong(panel.text1.getText(); n2=Long.parseLong(panel.text2.getText(); panel.text3.setText(String.valueOf(n1-n2); 注:将 panel.text1 写成 text1,panel.text2 写成 text2 整体扣 1 分。 解析本题考核知识点是图形界面设计、JPanel、JTextField、JButton 及其事件的处理。 在方法体中的代码类似于 34 小题。容器的嵌套不要忽略了