2023年6月20日发(作者:)
2008年全国自考Java语言程序设计(一)真题答案
参考答案
一、单项选择题 (本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1:参考答案:D
参考解析:(P8)本题考核知识点是Java语言标识符命名规则。
Java语言标识符可以按以下规则任意命名:
①由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。
②限定标识符的第一个字符不能是数字字符。
选项D答案第一个字符是数字字符。
试题内容:
下述字符组合不能作为Java程序标识符的是【】
A:Aa12
B:大x
C:y小
D:5x
2:参考答案:A
参考解析:(P14)本题考核知识点是Java算术运算符 ——“/”。
“/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。所以当x=53时,x/2=26。
试题内容:
以下程序代码的输出的结果是【】
int x=53;
n(1.0+x/2);
A:27.0
B:27.5
C:1.026
D:1.026.5
3:参考答案:B
参考解析:(P46)本题考核知识点是实例变量、类变量、局部变量。
类的成员变量分为实例变量和类变量。在定义成员变量时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不属于类的某个对象。引用类变量的途径有两条,或通过类,或通过对象。类的方法体中定义的变量称为局部变量,方法参数也属于局部变量。
试题内容:
A:x、y和s都是成员变量
B:x是实例变量、y是类变量、s是局部变量
C:x和y是实例变量、s是参数
D:x、y和s都是实例变量
4:参考答案:C
参考解析:(P77)本题考核知识点是StringTokenizer类。
包中的类StringTokenizer用于语言符号(单词)的分析,分析出字符串中的单词。另外还有命名的习惯约定(行业习惯,不是规定):一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。
试题内容:
需要分析字符串,并将字符串分解成可被独立使用的单词,可使用包中的类是【】
A:String
B:StringBuffer
C:StringTokenizer
D:stringTokenizer
5:参考答案:D
参考解析:(P91)本题考核知识点是JFrame类和关键字super。
在用Swing编写GUI程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容,这时可以使用超类的构造方法完成窗口的标题设置即super(s)。选项C完整的使用形式可以这样:
JFrame myWin=new JFrame(s)//创建JFrame窗口对象myWin,标题是s
但这样不符合本题题干“为程序的子窗口设定标题”的要求。
试题内容:
要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是【】
A:JFrame(s)
B:window(s)
C:new JFrame(s)
D:super(s)
6:参考答案:A
参考解析:(P118)
试题内容:
以下关于菜单的叙述中,正确的是【】
A:菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项
B:菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项
C:菜单分两级定义,最高一级的是菜单,菜单中放菜单项
D:菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项
7:参考答案:B
参考解析:(P137)本题考核知识点是字型要素。
Java的文字字型有三个要素:字体、风格和字号。常用的字体有Times New Roman、Symbol、宋体和楷体等。常用的风格有正常、粗体和斜体,分别用三个常量表示:、和,风格可以组合使用。字号是字的大小,单位是磅。
试题内容:
以下所述内容全部是字型要素的是【】
A:字体、字形和大小
B:字体、风格和字号
C:字形、风格和字号
D:字形、颜色和字号
8:参考答案:D
参考解析:(P162)本题考核知识点是多线程。
在Java中实现多线程一般情况下是先声明Thread类的子类,在子类中重载run()方法,然后创建这个子类的实例,让线程调用start()方法。
试题内容:
用Thread子类实现多线程的步骤顺序是【】
A:声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法
B:声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例
C:创建Thread子类的实例,让线程调用start()方法
D:声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法
9:参考答案:C
参考解析:(P175)本题考核知识点是输入输出流。
为Java的8位字节流数据的读和写操作提供支持的类分别是FileInputStream类和FileOutputStream类,它们分别是InputStream类和OutputStream类的子类;为Java的16位Unicode字符流数据的读和写操作提供支持的类分别是FileReader类和FileWriter类,它们分别是Reader类和Writer类的子类。
试题内容:
为16位Unicode字符流提供读和写操作支持的类分别是【】
A:FileInputStream类和FileOutputStream类
B:InputStream类和OutputStream类
C:FileReader类和FileWriter类
D:File_Reader类和File_Writer类
10:参考答案:A
参考解析:(P191)本题考核知识点是Java网络编程。
要接收和发送信息需用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。程序有了URLConnection对象后,就可使用URLConnection类提供的方法获得流对象和实现网络连接。
试题内容:
能利用对象提供的方法获得流对象和实现网络连接的是【】
A:URLConnection对象
B:URL对象
C:InetAddress对象
D:TCP/IP对象
二、填空题 (本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
1:参考答案:(P5)Applet(JApplet)类的子类
[解析]本题考核知识点是小应用程序。
一个小应用程序必须定义成一个Applet类的子类或JApplet类的子类。
试题内容:
一个小应用程序必须定义成一个_____。
2:参考答案:[解析](P16)
试题内容:
用条件运算符构造一个表达式:goal等于10时,表达式的值为"对了!",否则,表达式的值为"3:参考答案:(P40)数据(属性)和方法(函数)
错了!"。这个表达式是_____。
[解析]本题考核知识点是类的概念。
类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。
试题内容:
类是对一组相同对象的描述,类概括了同类对象的共有性质:_____。
4:参考答案:(P45)回收内存 [解析]本题考核知识点是数组。
Java语言根据相应类型变量采用直接访问还是间接访问,把类型分成基本类型和引用类型,数组类型和类类型是引用类型。数组进行整体赋值,其实是数组首地址的赋值,原来地址空间会自动释放。
试题内容:
设有数组a和b的定义如下:
int []a={1,2,3};int []b={4,5,6}
……
执行以下代码"a=b;",除了完成赋值操作之外,引起系统额外要做的工作是_____。
5:参考答案:(P100)CardLayout
[解析]本题考核知识点是布局设计。
常用的布局类:FlowLayout为依次放置组件;BorderLayout将组件放置在边界上; CardLayout将组件像扑克牌一样叠放,而每次只能显示其中的一个组件;GridLayout将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中;GridBagLayout能进行更精细的位置控制。
试题内容:
_____布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
6:参考答案:(P127)MouseListener
试题内容:
Java语言为处理鼠标事件提供两个接口:_____接口和MouseMotionListener接口。
7:参考答案:(P140)黄色
[解析]本题考核知识点是绘图模式。
当绘图模式设置为异或模式时,用背景色绘图出现的是异或的颜色,重画一个图形将清除图形。
试题内容:
某个绘图方法设置成"异或模式"绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色8:参考答案:(P161)run()
为红色,并用红色绘制线段,则线段的实际颜色是_____。
[解析]本题考核知识点是多线程。
Java程序实现多线程应用有两种途径:一是继承Thread类声明Thread子类,用Thread子类创建线程对象。二是在类中实现Runnable接口,在类中提供Runnable接口的run()方法。无论用哪种方法,都需要Java基础类库中的Thread类及其方法的支持。程序员能控制的关键性工作只有两个方面,一是编写线程的run()方法;二是建立线程实例。
试题内容:
程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线9:参考答案:(P179)FileWriter
程的_____方法;二是建立线程实例。
[解析]本题考核知识点是缓冲式输出。
实现缓冲式输出,需要将FileWriter对象接到BufferedWriter对象上,对BufferedWriter对象使用write()方法就能实现缓冲式输出。
试题内容:
BufferedWriter类是提供缓冲式输出的类。程序需要先创建_____对象,再利用这个对象创建10:参考答案:(P193)Socket
BufferedWriter对象。
[解析]本题考核知识点是Java网络编程。
Java语言在实现C/S模式中,套接字分为两类,在Server端使用ServerSocker类,在Client端使用Socket类。
试题内容:
在Java语言中,客户端使用的套接字类是_____。
三、简答题 (本大题共6小题,每小题3分,共18分)
1:参考答案:(P15)(x=2)!=(y=3)或(x=2&&y!=3)||(x!=2&&y!=3)
试题内容:
请写出表示条件"x=2与y=3有且只有一个成立"的Java表达式。
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是一个类B。这种情况下,A类对象一定可以是B类类型,因为B类的所有成员A类也有。也就是子类对象可以是超类类型。语句B b=new A()是正确的,A a=new B()是错误的。
试题内容:
如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。
Person p1=new Student();
Person p2=new Undergraduate();
Student s1=new Person();
Student s2=new Undergraduate();
Undergraduate ug1=new Person();
Undergraduate ug2=new Student();
Object ob=new Student();
3:参考答案:(P102)为对象添加监视器的方法是addActionListener;类必须实现的方法是public void actionPerformed(ActionEvent e)。
[解析]本题考核知识点是文本框输入结束动作事件(回车)。
文本框输入结束动作事件相应的监视器接口为ActionListener,要实现的接口方法是actionPerformed(),添加监视器的方法是addActoinListener()。
试题内容:
请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口4:参考答案:(P140)ne(20,30,120,30);或ne(120,30,20,30);
方法。
[解析]本题考核知识点是画线段。
方法中有四个参数分别表示线段的两个端点坐标,当两个端点坐标相同时,将画出一个点,而不再是线段。
试题内容:
请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象5:参考答案:(P175)import .*;
是类型为Graphics的g。
[解析]本题考核知识点是文件输入输出流。
实现输入输出操作的类库在包中。包中有一组支持打开流、向流写数据、从流读取数据和关闭流等操作的类,要使用这些类,程序必须导入包。
试题内容:
某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。
6:参考答案:(P199)与某个数据库建立连接;向数据库发送SQL语句;处理数据库返回的结果。
[解析]本题考核知识点是java数据库编程基础。
Java数据库连接JDBC由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接的API。它可以做三件事情。
试题内容:
JDBC是Java程序与数据库连接的API,请写出JDBC能做的三件事情。
四、程序填空题 (本大题共5小题,每空2分,共20分)
1:参考答案:n%10
return c
[解析]本题考核知识点是%运算符和return语句。
方法中d为循环分离出整数n的每一位数字(每次取n的个位数字,n也在变化:n/=10),在找出最大的数字后存入了变量c中,因方法有返回值类型为int,所以必须有return语句,要返回最大数字。
,
试题内容:
方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。
static int maxDingit(int n){
int c=0,d;
while(n>0){
d=_____;
if(d>c)c=d;
n/=10;
}
_____;
}
2:参考答案:getText()
sum+=a[i]或sum=sum+a[i]
[解析]本题考核知识点是图形界面设计中按钮事件方法的编写。
获取文本框中的内容使用的方法是getText(),方法名首字母均小写,后面单词首字母大写。获取整数序列后,使用单词分析器分解出每个整数(有类型转换过程)存入数组a中,然后对所有整数进行求和。
,
试题内容:
某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮事件的方法。
public void actionPerformed(ActionEvent e){
int sum;
if(e. getSource()=button){ String s=text1._____;//获取text1中的信息
String Tokenizer fenxi=new String Tokenizer(s,",,,n");
int n=okens();
double a[]=new double[n];
for(int i=0;i<n;i++){
String temp=ken();
a[i]=f(temp).doubleValue();
}
sum=0,
for(int i=0;i<n;i++){
_____;
}
t(" "+sum);//刷新显示。
}
}
3:参考答案:JMenuItem
getActionCommand
[解析]本题考核知识点是菜单。
生成菜单条是用类JMenuBar的构造方法JMenuBar(),把菜单条放入JFrame窗口中用setJMenuBar()方法;生成菜单用类JMenu的构造方法JMenu()或JMenu(String s);生成菜单项用类JMenuItem的构造方法JMenuItem()或JMenuItem(String s)。在菜单事件中获得事件源的方法是getSource(),获得事件源文字信息的方法是getActionCommand()。
,
试题内容:
以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出"唱歌菜单项被选中!"的字样。
……
singingItem=new=_____(“唱歌”);//生成菜单对象
……
public void actionPerformed(ActionEvent e){
if(e getSource()=singingItem)
Text(e._____()+“菜单项被选中!”);
}
4:参考答案:Graphics
repaint()或update()
[解析]本题考核知识点是小应用程序中paint()和repaint()方法的使用。
paint()方法需要Graphics类型参数,当单击鼠标时,要在paint()方法中再次显示图片,可以调用repaint()方法,使程序先清除paint()运行的结果,再运行paint();也可以调用update()方法,该方法会使系统自动调用repaint()方法。
,
试题内容:
某小应用程序实现幻灯片放映。小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的paint()方法和mousePressed()方法。 final int number=30;//假定幻灯片有30张
int count=0;
Image[]pic=new Image[number];
public void paint(_____gc){
if((pic[count])!=null)
age(pic[count],10,10,pic[count].getWidth(this),
pic[count].getHeight(this),this);
}
public void mousePressed(MouseEvent e){
count=(count+1)%number;//循环逐张显示
_____;
}
5:参考答案:synchronized
notify()
[解析]本题考核知识点是线程的互斥和同步。
在Java语言中,使用关键字synchronized定义临界段,能对共享对象的操作上锁,使得某一时刻只允许一个线程使用这个共享对象。但是为了同步,可在临界段中使用wait()、notify()和notifyAll()方法。wait()让线程一直等待,notify()方法通知第一个处于等待的线程结束等待。notifyAll()方法使所有处于等待的线程都结束等待,重新竞争CPU。
,
试题内容:
以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。
class ShareDataManager{
int data=0;
_____void modiData(int dalta){
if(delta>=0){
data+=delta;
}else{
while(data<delta){
try{ println(“发生等待!”);
wait();
}catch(InterruptedExceptione){}
}
data-=delta;
}
_____;
}
ShareDataManager(int it it Data){data=initData;}
}
五、程序分析题 (本大题共5小题,每小题4分,共20分)
1:参考答案:yuan Circle 62.8(2分)
试题内容:
yuan Area 314.0(2分)
阅读下列程序,请写出该程序的输出结果。
import Java applet.*;import .*;
class Point{
int x,y,
Point(int xx,int yy){x=xx;y=yy;}
Point(Point p){x=p.x;y=p.y;}
void m(int dx,int dy)(x+=dx;y+=dy;)
}
class Circle extends Point{
int r;
Circle(Point p,int rr){super(p);r=rr;}
float c(){return 3.14f*2.0f*r;}
float a(){return 3.14f*r*r;}
}
public class sample extends Applet{
Circle yuan,Pint d;
public void init(){d=new Pint(2,5);yuan=new Circld(d,10);}
public void paint(Graphics g){
ring("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20);
ring("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40);
}
}
2:参考答案:程序获得当前日期,将日期的字符串表示输出;(2分)截取日期字符串中从第11试题内容:
位开始到字母‘C’之前的部分字符串,并输出。(2分)
3:参考答案:在第一个文本框输入数据,输入结束(回车)后,(2分)在第二个文本框输出该整数的平方。(2分)
试题内容:
阅读下列程序,请写出该程序的功能。
import java applet*;import javax swing*,import java awt event*;
public class Class1 extends Applet implements ActionListerer{
JTextField text1,text2;
public void init(){
text1=new JTextField(10);text2=new JTextField(10);
setSize(200,100);add(text1);add(text2);
text1 addActionListerer(this);
}
public void actionPerformed(Action Evente){
long n;
if(rce()=text1){
n=ong( Text());
t(String valueOf(n*n));
}
}
}
4:参考答案:滑动滚动条的滑块,在文本框显示块位置对应的数值。
试题内容:
阅读以下程序,请写出该程序的功能。
import javax swing.*;import java awt.*;import .*;
class MyScrollBar extends JscrollBar{
public MyScrollBar(int init,int len,int low,int high){
super(NTAL,init,len,low,high);
}
}
class MyWindow extends JFrame implements AdjustmentListerer{
private JTextField text;
MyWindow(String s){
super(s);
MyScrollBar myBar=new MyScrollBar(10,10,0,255);
Container con=tentPane();
out(new GridLayout(2,1));
e(200,100);
ation(100,100);
ustmentListerer(this);
text=new JTextField(" ",20);
(text);(myBar);
ible(true);
}
public void adjustment ValueChanged(AdjustmentEvent e){
MyScrollBar myBar=(MyScrollBar)ustable(); t(" "+ue());
}
}
public class Class1{
public static void main(String[]args){
MyWindow myWindow=new MyWindow("text5_4");
}
}
5:参考答案:随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。
[解析]本题考核知识点是图形绘制和线程综合应用。
在run()方法中随机产生一个坐标点,以此为左上角坐标,红色填充一个小圆形区域,500毫秒后,用背景色填充同一个小圆形区域,使红色小圆形区域消失,马上又随机产生一个坐标点,再红色填充,再消失,循环不止。
试题内容:
小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。
import .*;import java awt.*;
public class Class1 extends implements Runnable{
Thread redBall;Graphics redPen;
int rx=0,ry=0;
public void init(){
setSize(250,200);
redBall=new Thread(this);
redPen=getGraphicsp();
or();
setBackground();
}
public void start(){();}
public void run(){
while(true){
if(t Thread()=redBall){
rx=(int)(80*());
ry=(int)(80*());
red or();
red al(100+rx,100+ry,10,10);
try((500);}
catch(InterruptedException e){}
or();
al(100+rx,100+ry,10,10);
}
}
}
}
六、程序设计题 (本大题共2小题,每小题6分,共12分) 1:参考答案:int [] halfArray(int [] a){(1分)
int [] b=new int[];(2分)
for(int k=0;k<;k++){(2分)
b[k]=a[k]/2;
}
return b;(1分)
}
[解析]本题考核知识点是面向对象程序设计中的方法设计。
编写方法,需要确定方法名,已给出halfArray;再确定参数个数及类型,要求是一个int型数组参数即halfArray(int []);再就是确定方法返回值类型,要求返回一个新数组,新数组元素类型要确定下来,根据题意,新数组元素是参数数组相应元素的一半,这一半应该可能是小数,所以方法头应该为float[]halfArray(int [])而不应该是int [] halfAray(int []),方法体中的一半也应该是除以2.0。并转换成float类型,方法体定义的数组b也应该是float类型。或者返回值类型和数组b的类型都定义成double类型。
试题内容:
编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数2:参考答案:long n1,n2;(1分)
组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
if(rce()=(ton)){(3分)
n1=ong(t());
n2=ong(t());
t(f(n1+n2));
}
else if(rce()=(ton)){(2分)
n1=ong(t());
n2=ong(t());
t(f(n1-n2));
}
注:将1写成text1,2写成text2整体扣1分。
[解析]本题考核知识点是图形界面设计、JPanel、JTextField、JButton及其事件的处理。
在方法体中的代码类似于34小题。容器的嵌套不要忽略了。
试题内容:
一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。
注:这里是给定部分的程序,你要编写的是actionPerformed(ActionEvent e)方法。
import .*;import .*;
import .*;import .*;
class Panell extends JPanel{
JTextField text1,text2,text3;JButton addButton,subButton;
Panell(){
text1=newJTextField(10);text2=new JTextField(10);
text3=new JTextField(10);setLayout(new GridLayout(5,1)); addButton=new Jbutton(“加”);subButton=new JButton(“减”);
add(text1);add(text2);
add(text3);add(addButton);add(subButton);
}
}
public class Class1 extends Applet implements ActionListener{
Pane; panel;
public void init(){
setSize(100,200);panel=new Panell();add(panel);
(ton).addActionListener(this);
(ton).addActionListener(this);
}
public void actionPerformed(ActionEvent e){
//这里是你要编写的代码
}
}
2023年6月20日发(作者:)
2008年全国自考Java语言程序设计(一)真题答案
参考答案
一、单项选择题 (本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1:参考答案:D
参考解析:(P8)本题考核知识点是Java语言标识符命名规则。
Java语言标识符可以按以下规则任意命名:
①由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。
②限定标识符的第一个字符不能是数字字符。
选项D答案第一个字符是数字字符。
试题内容:
下述字符组合不能作为Java程序标识符的是【】
A:Aa12
B:大x
C:y小
D:5x
2:参考答案:A
参考解析:(P14)本题考核知识点是Java算术运算符 ——“/”。
“/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。所以当x=53时,x/2=26。
试题内容:
以下程序代码的输出的结果是【】
int x=53;
n(1.0+x/2);
A:27.0
B:27.5
C:1.026
D:1.026.5
3:参考答案:B
参考解析:(P46)本题考核知识点是实例变量、类变量、局部变量。
类的成员变量分为实例变量和类变量。在定义成员变量时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不属于类的某个对象。引用类变量的途径有两条,或通过类,或通过对象。类的方法体中定义的变量称为局部变量,方法参数也属于局部变量。
试题内容:
A:x、y和s都是成员变量
B:x是实例变量、y是类变量、s是局部变量
C:x和y是实例变量、s是参数
D:x、y和s都是实例变量
4:参考答案:C
参考解析:(P77)本题考核知识点是StringTokenizer类。
包中的类StringTokenizer用于语言符号(单词)的分析,分析出字符串中的单词。另外还有命名的习惯约定(行业习惯,不是规定):一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。
试题内容:
需要分析字符串,并将字符串分解成可被独立使用的单词,可使用包中的类是【】
A:String
B:StringBuffer
C:StringTokenizer
D:stringTokenizer
5:参考答案:D
参考解析:(P91)本题考核知识点是JFrame类和关键字super。
在用Swing编写GUI程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容,这时可以使用超类的构造方法完成窗口的标题设置即super(s)。选项C完整的使用形式可以这样:
JFrame myWin=new JFrame(s)//创建JFrame窗口对象myWin,标题是s
但这样不符合本题题干“为程序的子窗口设定标题”的要求。
试题内容:
要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是【】
A:JFrame(s)
B:window(s)
C:new JFrame(s)
D:super(s)
6:参考答案:A
参考解析:(P118)
试题内容:
以下关于菜单的叙述中,正确的是【】
A:菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项
B:菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项
C:菜单分两级定义,最高一级的是菜单,菜单中放菜单项
D:菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项
7:参考答案:B
参考解析:(P137)本题考核知识点是字型要素。
Java的文字字型有三个要素:字体、风格和字号。常用的字体有Times New Roman、Symbol、宋体和楷体等。常用的风格有正常、粗体和斜体,分别用三个常量表示:、和,风格可以组合使用。字号是字的大小,单位是磅。
试题内容:
以下所述内容全部是字型要素的是【】
A:字体、字形和大小
B:字体、风格和字号
C:字形、风格和字号
D:字形、颜色和字号
8:参考答案:D
参考解析:(P162)本题考核知识点是多线程。
在Java中实现多线程一般情况下是先声明Thread类的子类,在子类中重载run()方法,然后创建这个子类的实例,让线程调用start()方法。
试题内容:
用Thread子类实现多线程的步骤顺序是【】
A:声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法
B:声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例
C:创建Thread子类的实例,让线程调用start()方法
D:声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法
9:参考答案:C
参考解析:(P175)本题考核知识点是输入输出流。
为Java的8位字节流数据的读和写操作提供支持的类分别是FileInputStream类和FileOutputStream类,它们分别是InputStream类和OutputStream类的子类;为Java的16位Unicode字符流数据的读和写操作提供支持的类分别是FileReader类和FileWriter类,它们分别是Reader类和Writer类的子类。
试题内容:
为16位Unicode字符流提供读和写操作支持的类分别是【】
A:FileInputStream类和FileOutputStream类
B:InputStream类和OutputStream类
C:FileReader类和FileWriter类
D:File_Reader类和File_Writer类
10:参考答案:A
参考解析:(P191)本题考核知识点是Java网络编程。
要接收和发送信息需用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。程序有了URLConnection对象后,就可使用URLConnection类提供的方法获得流对象和实现网络连接。
试题内容:
能利用对象提供的方法获得流对象和实现网络连接的是【】
A:URLConnection对象
B:URL对象
C:InetAddress对象
D:TCP/IP对象
二、填空题 (本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
1:参考答案:(P5)Applet(JApplet)类的子类
[解析]本题考核知识点是小应用程序。
一个小应用程序必须定义成一个Applet类的子类或JApplet类的子类。
试题内容:
一个小应用程序必须定义成一个_____。
2:参考答案:[解析](P16)
试题内容:
用条件运算符构造一个表达式:goal等于10时,表达式的值为"对了!",否则,表达式的值为"3:参考答案:(P40)数据(属性)和方法(函数)
错了!"。这个表达式是_____。
[解析]本题考核知识点是类的概念。
类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。
试题内容:
类是对一组相同对象的描述,类概括了同类对象的共有性质:_____。
4:参考答案:(P45)回收内存 [解析]本题考核知识点是数组。
Java语言根据相应类型变量采用直接访问还是间接访问,把类型分成基本类型和引用类型,数组类型和类类型是引用类型。数组进行整体赋值,其实是数组首地址的赋值,原来地址空间会自动释放。
试题内容:
设有数组a和b的定义如下:
int []a={1,2,3};int []b={4,5,6}
……
执行以下代码"a=b;",除了完成赋值操作之外,引起系统额外要做的工作是_____。
5:参考答案:(P100)CardLayout
[解析]本题考核知识点是布局设计。
常用的布局类:FlowLayout为依次放置组件;BorderLayout将组件放置在边界上; CardLayout将组件像扑克牌一样叠放,而每次只能显示其中的一个组件;GridLayout将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中;GridBagLayout能进行更精细的位置控制。
试题内容:
_____布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
6:参考答案:(P127)MouseListener
试题内容:
Java语言为处理鼠标事件提供两个接口:_____接口和MouseMotionListener接口。
7:参考答案:(P140)黄色
[解析]本题考核知识点是绘图模式。
当绘图模式设置为异或模式时,用背景色绘图出现的是异或的颜色,重画一个图形将清除图形。
试题内容:
某个绘图方法设置成"异或模式"绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色8:参考答案:(P161)run()
为红色,并用红色绘制线段,则线段的实际颜色是_____。
[解析]本题考核知识点是多线程。
Java程序实现多线程应用有两种途径:一是继承Thread类声明Thread子类,用Thread子类创建线程对象。二是在类中实现Runnable接口,在类中提供Runnable接口的run()方法。无论用哪种方法,都需要Java基础类库中的Thread类及其方法的支持。程序员能控制的关键性工作只有两个方面,一是编写线程的run()方法;二是建立线程实例。
试题内容:
程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线9:参考答案:(P179)FileWriter
程的_____方法;二是建立线程实例。
[解析]本题考核知识点是缓冲式输出。
实现缓冲式输出,需要将FileWriter对象接到BufferedWriter对象上,对BufferedWriter对象使用write()方法就能实现缓冲式输出。
试题内容:
BufferedWriter类是提供缓冲式输出的类。程序需要先创建_____对象,再利用这个对象创建10:参考答案:(P193)Socket
BufferedWriter对象。
[解析]本题考核知识点是Java网络编程。
Java语言在实现C/S模式中,套接字分为两类,在Server端使用ServerSocker类,在Client端使用Socket类。
试题内容:
在Java语言中,客户端使用的套接字类是_____。
三、简答题 (本大题共6小题,每小题3分,共18分)
1:参考答案:(P15)(x=2)!=(y=3)或(x=2&&y!=3)||(x!=2&&y!=3)
试题内容:
请写出表示条件"x=2与y=3有且只有一个成立"的Java表达式。
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是一个类B。这种情况下,A类对象一定可以是B类类型,因为B类的所有成员A类也有。也就是子类对象可以是超类类型。语句B b=new A()是正确的,A a=new B()是错误的。
试题内容:
如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。
Person p1=new Student();
Person p2=new Undergraduate();
Student s1=new Person();
Student s2=new Undergraduate();
Undergraduate ug1=new Person();
Undergraduate ug2=new Student();
Object ob=new Student();
3:参考答案:(P102)为对象添加监视器的方法是addActionListener;类必须实现的方法是public void actionPerformed(ActionEvent e)。
[解析]本题考核知识点是文本框输入结束动作事件(回车)。
文本框输入结束动作事件相应的监视器接口为ActionListener,要实现的接口方法是actionPerformed(),添加监视器的方法是addActoinListener()。
试题内容:
请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口4:参考答案:(P140)ne(20,30,120,30);或ne(120,30,20,30);
方法。
[解析]本题考核知识点是画线段。
方法中有四个参数分别表示线段的两个端点坐标,当两个端点坐标相同时,将画出一个点,而不再是线段。
试题内容:
请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象5:参考答案:(P175)import .*;
是类型为Graphics的g。
[解析]本题考核知识点是文件输入输出流。
实现输入输出操作的类库在包中。包中有一组支持打开流、向流写数据、从流读取数据和关闭流等操作的类,要使用这些类,程序必须导入包。
试题内容:
某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。
6:参考答案:(P199)与某个数据库建立连接;向数据库发送SQL语句;处理数据库返回的结果。
[解析]本题考核知识点是java数据库编程基础。
Java数据库连接JDBC由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接的API。它可以做三件事情。
试题内容:
JDBC是Java程序与数据库连接的API,请写出JDBC能做的三件事情。
四、程序填空题 (本大题共5小题,每空2分,共20分)
1:参考答案:n%10
return c
[解析]本题考核知识点是%运算符和return语句。
方法中d为循环分离出整数n的每一位数字(每次取n的个位数字,n也在变化:n/=10),在找出最大的数字后存入了变量c中,因方法有返回值类型为int,所以必须有return语句,要返回最大数字。
,
试题内容:
方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。
static int maxDingit(int n){
int c=0,d;
while(n>0){
d=_____;
if(d>c)c=d;
n/=10;
}
_____;
}
2:参考答案:getText()
sum+=a[i]或sum=sum+a[i]
[解析]本题考核知识点是图形界面设计中按钮事件方法的编写。
获取文本框中的内容使用的方法是getText(),方法名首字母均小写,后面单词首字母大写。获取整数序列后,使用单词分析器分解出每个整数(有类型转换过程)存入数组a中,然后对所有整数进行求和。
,
试题内容:
某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮事件的方法。
public void actionPerformed(ActionEvent e){
int sum;
if(e. getSource()=button){ String s=text1._____;//获取text1中的信息
String Tokenizer fenxi=new String Tokenizer(s,",,,n");
int n=okens();
double a[]=new double[n];
for(int i=0;i<n;i++){
String temp=ken();
a[i]=f(temp).doubleValue();
}
sum=0,
for(int i=0;i<n;i++){
_____;
}
t(" "+sum);//刷新显示。
}
}
3:参考答案:JMenuItem
getActionCommand
[解析]本题考核知识点是菜单。
生成菜单条是用类JMenuBar的构造方法JMenuBar(),把菜单条放入JFrame窗口中用setJMenuBar()方法;生成菜单用类JMenu的构造方法JMenu()或JMenu(String s);生成菜单项用类JMenuItem的构造方法JMenuItem()或JMenuItem(String s)。在菜单事件中获得事件源的方法是getSource(),获得事件源文字信息的方法是getActionCommand()。
,
试题内容:
以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出"唱歌菜单项被选中!"的字样。
……
singingItem=new=_____(“唱歌”);//生成菜单对象
……
public void actionPerformed(ActionEvent e){
if(e getSource()=singingItem)
Text(e._____()+“菜单项被选中!”);
}
4:参考答案:Graphics
repaint()或update()
[解析]本题考核知识点是小应用程序中paint()和repaint()方法的使用。
paint()方法需要Graphics类型参数,当单击鼠标时,要在paint()方法中再次显示图片,可以调用repaint()方法,使程序先清除paint()运行的结果,再运行paint();也可以调用update()方法,该方法会使系统自动调用repaint()方法。
,
试题内容:
某小应用程序实现幻灯片放映。小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的paint()方法和mousePressed()方法。 final int number=30;//假定幻灯片有30张
int count=0;
Image[]pic=new Image[number];
public void paint(_____gc){
if((pic[count])!=null)
age(pic[count],10,10,pic[count].getWidth(this),
pic[count].getHeight(this),this);
}
public void mousePressed(MouseEvent e){
count=(count+1)%number;//循环逐张显示
_____;
}
5:参考答案:synchronized
notify()
[解析]本题考核知识点是线程的互斥和同步。
在Java语言中,使用关键字synchronized定义临界段,能对共享对象的操作上锁,使得某一时刻只允许一个线程使用这个共享对象。但是为了同步,可在临界段中使用wait()、notify()和notifyAll()方法。wait()让线程一直等待,notify()方法通知第一个处于等待的线程结束等待。notifyAll()方法使所有处于等待的线程都结束等待,重新竞争CPU。
,
试题内容:
以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。
class ShareDataManager{
int data=0;
_____void modiData(int dalta){
if(delta>=0){
data+=delta;
}else{
while(data<delta){
try{ println(“发生等待!”);
wait();
}catch(InterruptedExceptione){}
}
data-=delta;
}
_____;
}
ShareDataManager(int it it Data){data=initData;}
}
五、程序分析题 (本大题共5小题,每小题4分,共20分)
1:参考答案:yuan Circle 62.8(2分)
试题内容:
yuan Area 314.0(2分)
阅读下列程序,请写出该程序的输出结果。
import Java applet.*;import .*;
class Point{
int x,y,
Point(int xx,int yy){x=xx;y=yy;}
Point(Point p){x=p.x;y=p.y;}
void m(int dx,int dy)(x+=dx;y+=dy;)
}
class Circle extends Point{
int r;
Circle(Point p,int rr){super(p);r=rr;}
float c(){return 3.14f*2.0f*r;}
float a(){return 3.14f*r*r;}
}
public class sample extends Applet{
Circle yuan,Pint d;
public void init(){d=new Pint(2,5);yuan=new Circld(d,10);}
public void paint(Graphics g){
ring("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20);
ring("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40);
}
}
2:参考答案:程序获得当前日期,将日期的字符串表示输出;(2分)截取日期字符串中从第11试题内容:
位开始到字母‘C’之前的部分字符串,并输出。(2分)
3:参考答案:在第一个文本框输入数据,输入结束(回车)后,(2分)在第二个文本框输出该整数的平方。(2分)
试题内容:
阅读下列程序,请写出该程序的功能。
import java applet*;import javax swing*,import java awt event*;
public class Class1 extends Applet implements ActionListerer{
JTextField text1,text2;
public void init(){
text1=new JTextField(10);text2=new JTextField(10);
setSize(200,100);add(text1);add(text2);
text1 addActionListerer(this);
}
public void actionPerformed(Action Evente){
long n;
if(rce()=text1){
n=ong( Text());
t(String valueOf(n*n));
}
}
}
4:参考答案:滑动滚动条的滑块,在文本框显示块位置对应的数值。
试题内容:
阅读以下程序,请写出该程序的功能。
import javax swing.*;import java awt.*;import .*;
class MyScrollBar extends JscrollBar{
public MyScrollBar(int init,int len,int low,int high){
super(NTAL,init,len,low,high);
}
}
class MyWindow extends JFrame implements AdjustmentListerer{
private JTextField text;
MyWindow(String s){
super(s);
MyScrollBar myBar=new MyScrollBar(10,10,0,255);
Container con=tentPane();
out(new GridLayout(2,1));
e(200,100);
ation(100,100);
ustmentListerer(this);
text=new JTextField(" ",20);
(text);(myBar);
ible(true);
}
public void adjustment ValueChanged(AdjustmentEvent e){
MyScrollBar myBar=(MyScrollBar)ustable(); t(" "+ue());
}
}
public class Class1{
public static void main(String[]args){
MyWindow myWindow=new MyWindow("text5_4");
}
}
5:参考答案:随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。
[解析]本题考核知识点是图形绘制和线程综合应用。
在run()方法中随机产生一个坐标点,以此为左上角坐标,红色填充一个小圆形区域,500毫秒后,用背景色填充同一个小圆形区域,使红色小圆形区域消失,马上又随机产生一个坐标点,再红色填充,再消失,循环不止。
试题内容:
小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。
import .*;import java awt.*;
public class Class1 extends implements Runnable{
Thread redBall;Graphics redPen;
int rx=0,ry=0;
public void init(){
setSize(250,200);
redBall=new Thread(this);
redPen=getGraphicsp();
or();
setBackground();
}
public void start(){();}
public void run(){
while(true){
if(t Thread()=redBall){
rx=(int)(80*());
ry=(int)(80*());
red or();
red al(100+rx,100+ry,10,10);
try((500);}
catch(InterruptedException e){}
or();
al(100+rx,100+ry,10,10);
}
}
}
}
六、程序设计题 (本大题共2小题,每小题6分,共12分) 1:参考答案:int [] halfArray(int [] a){(1分)
int [] b=new int[];(2分)
for(int k=0;k<;k++){(2分)
b[k]=a[k]/2;
}
return b;(1分)
}
[解析]本题考核知识点是面向对象程序设计中的方法设计。
编写方法,需要确定方法名,已给出halfArray;再确定参数个数及类型,要求是一个int型数组参数即halfArray(int []);再就是确定方法返回值类型,要求返回一个新数组,新数组元素类型要确定下来,根据题意,新数组元素是参数数组相应元素的一半,这一半应该可能是小数,所以方法头应该为float[]halfArray(int [])而不应该是int [] halfAray(int []),方法体中的一半也应该是除以2.0。并转换成float类型,方法体定义的数组b也应该是float类型。或者返回值类型和数组b的类型都定义成double类型。
试题内容:
编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数2:参考答案:long n1,n2;(1分)
组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
if(rce()=(ton)){(3分)
n1=ong(t());
n2=ong(t());
t(f(n1+n2));
}
else if(rce()=(ton)){(2分)
n1=ong(t());
n2=ong(t());
t(f(n1-n2));
}
注:将1写成text1,2写成text2整体扣1分。
[解析]本题考核知识点是图形界面设计、JPanel、JTextField、JButton及其事件的处理。
在方法体中的代码类似于34小题。容器的嵌套不要忽略了。
试题内容:
一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。
注:这里是给定部分的程序,你要编写的是actionPerformed(ActionEvent e)方法。
import .*;import .*;
import .*;import .*;
class Panell extends JPanel{
JTextField text1,text2,text3;JButton addButton,subButton;
Panell(){
text1=newJTextField(10);text2=new JTextField(10);
text3=new JTextField(10);setLayout(new GridLayout(5,1)); addButton=new Jbutton(“加”);subButton=new JButton(“减”);
add(text1);add(text2);
add(text3);add(addButton);add(subButton);
}
}
public class Class1 extends Applet implements ActionListener{
Pane; panel;
public void init(){
setSize(100,200);panel=new Panell();add(panel);
(ton).addActionListener(this);
(ton).addActionListener(this);
}
public void actionPerformed(ActionEvent e){
//这里是你要编写的代码
}
}
发布评论