份Java自考题参考答案docDOC.docx
《份Java自考题参考答案docDOC.docx》由会员分享,可在线阅读,更多相关《份Java自考题参考答案docDOC.docx(10页珍藏版)》请在冰点文库上搜索。
份Java自考题参考答案docDOC
2012年10月Java语言程序设计
(一)试题
全国2012年10月高等教育自学考试
Java语言程序设计
(一)试题课程代码:
04747
一、单项选择题(本大题共10小题,每小题1分,共10分)
1.Java语言中,int类型占用的二进制位数是
A.8位B.16位 C.32位D.64位
2.以下关于Java语句的说法正确的是
A.continue语句必须出现在多路按值选择结构或循环结构中
B.return语句可以出现在方法体的外面
C.编译系统会把单独的分号看成是空语句
D.break语句的作用是提早结束当前轮次循环
3.不能被再继承的类是
A.final类B.abstract类C.public类D.用户自定义类
4.已知Strings="ABCDEFGHIJABC",以下说法错误的是
A.s.indexOf("C")等于2B.s.indexOf("EFG",2)等于4
C.s.indexOf("A",7)等于10D.s.indexOf("D",4)等于3
5.以下Swing提供的GUI组件类和容器类中,不属于顶层容器的是
A.JFrameB.JAppletC.JDialogD.JMenu
6.以下不是JDialog类构造方法的是
A.JDialog()B.JDialog(booleanb)
C.JDialog(JFramef,Strings)
D.JDialog(JFramef,Strings,booleanb)
7.以下不属于文字字型要素的是
A.字体B.风格C.字号D.颜色
8.阻塞状态的线程在消除引起阻塞的原因后,会转入
A.死亡状态B.开始状态C.就绪状态D.运行状态
9.字符流数据是
A.8位的ASCII字符B.16位的Unicode字符
C.任意字符数据D.任意二进制数据
10.以下方法中,可以执行SQL查询语句的是
A.executeQuery() B.executeUpdate()
C.executeSQL()D.executeFind()
二、填空题(本大题共10小题,每小题2分,共20分)
11.如果Java源文件中有多个类,那么只能有一个_public_类。
12.运算符‘‘<”、“*”和“&&”按优先级从高到低的顺序排列为_*<&&_。
13.当联编推迟至运行时间实现时,该联编过程称为_动态_联编。
14.数组名如同对象名一样,是一种_引用__。
15.为了让监视器与事件对象关联起来,需要对事件对象做__监视器加载__,告诉系统事件对象的监视器。
16.列表在界面中表现为列表框,是_JList_类或它的子类的对象。
17.Java语言的图像处理功能被封装在_Image_类中。
18.线程之间的相互等待被称为线程的_互斥_。
19.希望由FileReader对象rf,创建对文件实行缓冲式输入的对象in,能实现这个要求的代码是_BufferedReaderin=newBufferedReader(rf);__。
20.当Client程序和Server程序需要通信时,可以用__Socket__类建立套接字连接。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出表示条件“y右移一位后大于3并且y不等于0”成立的Java表达式。
((y>>1)>3)&&(y!
=0)
22.请写出类之间的is-a关系和类之间的has-a关系的含义。
is-a:
类之间存在继承关系,即类A继承扩展类B,则类A和类B之间有is-a关系。
has-a:
类之间存在包含关系,即在类A中某个成员变量的类型是类B,则称类A和类B之间是has-a关系。
23.请写出GridLayout布局的三种构造方法。
GridLayout()
GridLayout(intm,intn)
GridLayout(intm,intn,inth,intv)
24.请写出使用Graphics2D类声明并创建一个左上角为(30,40),宽是80,高为50的椭圆对象ellipse的语句。
Graphics2Dg2d=(Graphics2D)g;
Ellipse2Dellipse=newEllipse2D.Double(30.40.80.50);
g2d.draw(ellipse);
25.请写出采用缓冲式输出时,程序由文件名创建缓冲式输出流的步骤。
首先创建FileWriter对象,再利用FileWriter对象创建BufferedWriter对象,最后通过BufferedWriter对象是使用write()方法实现缓冲式输出。
26.请写出数据库更新操作中,删除数据表记录的3种方案各自所使用的对象。
(1)使用Statement对象实现
(2)使用ResultSet对象实现
(3)使用PreparedStatement对象实现
四、程序填空题(本大题共5小题,每空2分,共20分)
27.以下程序是求50以内的质数。
publicclassTest27{
publicstaticvoidmain(String[]args){
inti,j;
for(j=2;j<=50;j++){
for(i=2;i<=j/2;i++)
if(_j%i__==0)break;
if(i>__j/2_){
System.out.println(j+"是质数");
}else{}
}
}
}
28.以下是使用JFrame派生的子类MyWindowDemo创建JFrame窗口的代码。
类MyWindowDemo的构造方法有五个参数:
窗口的标题名,加人窗口的组件,组件的背景颜色,以及窗口宽和高。
classMyWindowDemoextendsJFrame{
publicMyWindowDemo(Stringname,JButtonb,Colorc,intw,inth){
_super()__;
setTitle(name);
setSize(w,h);
ContainercontentPane=_getContentPane()_;
contentPane.add(b);
b.setBackground(c);
}
}
29.小应用程序声明一个用户窗口类和对话框类,用户窗口有若干按钮,当点击某按钮时,打开对应的对话框。
以下是对buttonl进行处理的部分代码。
publicvoidactionPerformed(ActionEvente){
MyDialogdialog;
if(e.getSource()==button1){
dialog=newMyDialog(_this_,"水果");
dialog._setVisible(true)__; //显示该对话框
……… //这里是对buttonl进行处理的其他代码
}
……… //这里是其他按钮事件的处理代码
}
30.以下是能播放声音的小应用程序中事件处理方法的部分代码,其中clip为一个音频对象,b1、b2分别是播放和停止播放的按钮。
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1){clip.__play()__;}
elseif(e.getSource()==b2){clip._stop()__;}
}
31.以下程序段定义的类DataManager用于管理多个线程共享数据data。
为了对data的取、存和修改操作保持完整,多线程在data上的操作有互斥要求;另外,限制线程对data的修改不能让data为负数,所以多线程在data上的操作还有同步要求。
为此,程序为管理data上的操作定义成类。
classDataManager{
intdata;
DataManager(intinit){data=init;}
publicintgetData(){returndata;}
privatevoidputData(intnewValue){ data=newValue;}
__synchronized_voidmodiData(intdelta){
if(delta>=0){
putData(getData()+delta);
}else {
while(getData()+delta<0){
try{wait();}
catch(InterruptedExceptione){}
}
putData(getData()+delta);
}
_notify()_;
}
}
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的输出结果。
publicclassTest32{
publicstaticvoidmain(String[]args){
inti,j;
for(i=0;i<5;i++)
{
for(j=1;j<5-i;j++)
System.out.print("");
for(j=0;j<=i;j++)
System.om.print(’"*");
System.out.Println();
}
}
}
*
**
***
****
*****
33.阅读下列程序,请写出该程序的输出结果。
publicclassTest33{
staticintx=1;//注意x是类变量,是共享的
inty=0;
Test33(){ x++;y++; }
publicstaticvoidmain(String[]args){
Test33st=newTest33();
System.out.println("x="+x);
System.out.println("st.y="+st.y);
st=newTest33();
System.out.println("x="+x);
System.out.println("st.y="+st.y);
}
}
x=2
st.y=1
x=3
st.y=1
34.阅读下列程序,请写出该程序的功能。
假定图像文件apple.gif、banana.gif、pear.gif和watermelon.gif已经存放在当前目录中。
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;
publicclassTest34extendsJAppletimplementsItemListener{
Imageimage=null;
JPanelp;
publicvoidinit(){
ContainercontentPane=getContentPane();
contentPane.setLayout(newFlowLayout());
JComboBoxjc=newJComboBox();
jc.addItem("apple");jc.addItem("banana");
jc.addItem("pear");jc.addItem("watermelon");
jc.addItemListener(this);
contentPane.add(jc);
p=newJPanel();
contentPane.add(p);
}
publicvoidpaint(Graphicsg){
if(image!
=null)
g.drawlmage(image,0,0,this);
}
publicvoiditemStateChanged(ItemEventie){
Strings=(String)ie.Getltem();
image=getImage(getCodeBase(),s+".gif");
repaint();
}
}
随着组合框选择项目变话,在小应用程序原点上以图片实际大小绘制对应的图片
35.阅读下列程序,请写出该程序的功能。
importjava.applet.*;importjava.awt.*;
publicclassTest35extendsApplet{
publicvoidpaint(Graphicsg){
setSize(380,200);
for(inti=0;i<10;i++){
Colormyredcolor=newColor(i*25+5,0,0);
g.setColor(myredcolor);
g.fillRect(i*32+5,2,28,28);
}
}
}
根据循环i计算产生矩形框的颜色和位置,用不同颜色在相应位置绘制长宽均为28的填充颜色的正方形(最好可以分开逐一说明)
36.阅读下列程序,请写出该程序的功能。
importjava.applet.*;importjava.awt.*;importjava.awt.event.*;
publicclassTest36extendsApplet{
finalintinc=25;
intmax=500;intmin=200;
Dimensiond;
publicvoidinit(){
addMouseListener(newMouseAdapter()){
publicvoidmouseReleased(MouseEventme){
intw=(d.width+inc)>max?
min:
(d.width+inc);
inth=(d.height+inc)>max?
min:
(d.height+inc);
setSize(newDimension(w,h));
}
}
}
publicvoidpaint(Graphicsg){
d=getSize();
g.drawLine(0,0,d.width-1,d.height-1);
g.drawLine(0,d.height-1,d.width-1,0);
g.drawRect(0,0,d.width-1,d.height-1);
}
}
当鼠标释放时,计算并设置小应用程序的大小,并根据小应用程序大小在原点(0,0)和右下角(d.width-1,d.height-1)绘制一条对角线,在左下角角(0,d.height-1)和右上角(d.width-1,0)绘制一条对角线,在从原点开始绘制一个长为d.width-1,宽为d.height-1的矩形框。
当鼠标释放时,计算并设置小应用程序大小,在原点开始绘制一个长为小应用程序宽度-1,高为小应用程序高度-1的矩形框,并且绘制出其两条对角线。
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.请编写方法int[]cubeArray(int[]a),返回一个新数组b,数组b的长度与参数数组的长度相同,其元素的值是参数数组对应各元素值的立方。
int[]cubeArray(int[]a){
intb[]=newint[a.length];
inti;
for(i=0;ireturnb;
}
38.小应用程序设置一个文本区、一个文本框和两个按钮。
用户在文本区中输入整数序列,单击求和按钮,程序对文本区中的整数序列进行求和,并在文本框中输出计算结果。
单击第二个按钮,清除文本区和文本框中内容。
注:
这里是给定程序的部分代码,你要编写的是actionPerformed(ActionEvente)方法。
importjava.util.*;.........
publicclassTest38extendsAppletimplementsActionListener{
JTextAreatextA;JTextFieldtextF;JButtonb1,b2;
publicvoidinit(){
textA=newJTextArea("",5,10);
textF=newJTextField("",10);
b1=newJButton("求和");b2=newJButton("重新开始");
b1.addActionListener(this);b2.addActionListener(this);
add(textA);add(textF);add(b1);add(b2);
……..
}
publicvoidactionPerformed(ActionEvente){
//请在以下位置编写代码
if(e.getSource()==b1){
Strings=textA.getText();intsum=0;
StringTokenizerfx=newStringTokenizer(s);
while(fx.hasMoreTokens()){
sum=sum+Integer.parseInt(fx.nextToken());
}
textF.setText(String.valueOf(sum));
}elseif(e.getSource()==b2){
textA.setText(null);textF.setText(null);
}
}
}