Java语言程序设计一试题答案.docx
《Java语言程序设计一试题答案.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计一试题答案.docx(13页珍藏版)》请在冰豆网上搜索。
Java语言程序设计一试题答案
全国2012年10月高等教育自学考试
一、单项选择题(本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸’’的相应代码涂黑。
错涂、多涂或未涂均无分。
1.Java语言中,int类型占用的二进制位数是(C)
A.8位B.16位
C.32位D.64位
2.以下关于Java语句的说法正确的是(C)
A.continue语句必须出现在多路按值选择结构或循环结构中
B.return语句可以出现在方法体的外面
C.编译系统会把单独的分号看成是空语句
D.break语句的作用是提早结束当前轮次循环
3.不能被再继承的类是(A)
A.final类B.abstract类
C.public类D.用户自定义类
4.已知Strings="ABCDEFGHIJABC",以下说法错误的是(D)
A.s.indexOf("C")等于2B.s.indexOf("EFG",2)等于4
C.s.indexOf("A",7)等于10D.s.indexOf("D",4)等于3
5.以下Swing提供的GUI组件类和容器类中,不属于顶层容器的是(D)
A.JFrameB.JApplet
C.JDialogD.JMenu
6.以下不是JDialog类构造方法的是(B)
A.JDialog()B.JDialog(booleanb)
C.JDialog(JFramef,Strings)D.JDialog(JFramef,Strings,booleanb)
7.以下不属于文字字型要素的是(D)
A.字体B.风格
C.字号D.颜色
8.阻塞状态的线程在消除引起阻塞的原因后,会转入(C)
A.死亡状态B.开始状态
C.就绪状态D.运行状态
9.字符流数据是(B)
A.8位的ASCII字符B.16位的Unicode字符
C.任意字符数据D.任意二进制数据
10.以下方法中,可以执行SQL查询语句的是(A)
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,能实现这个要求的代码是
__in=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(introw,intcol)
GridLayout(introw,intcol,inthorz,intvert)
24.请写出使用Graphics2D类声明并创建一个左上角为(30,40),宽是80,高为50的椭圆对象ellipse的语句。
答:
Ellipse2Dellipse=newEllipse2D.Double(30,40,80,50);
25.请写出采用缓冲式输出时,程序由文件名创建缓冲式输出流的步骤。
答:
程序先创建FileWrite对象,再利用FileWrite对象创建BufferedWrite对象,对BufferedWrite对象使用write()方法就能实现缓冲式输出。
26.请写出数据库更新操作中,删除数据表记录的3种方案各自所使用的对象。
答:
使用Statement对象,使用ResultSet对象,使用PrepareStatement对象。
四、程序填空题(本大题共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;
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.drawImage(image,0,0,this);
}
publicvoiditemStateChanged(ItemEventie){
Strings=(String)ie.getItem();
image=getImage(getCodeBase(),s+".gif");
repaint();
}
}
答:
小应用程序有一个组合框,其中有4个可选条目,分别是:
"apple","banana","pear","watermelon"。
当选择其中一个条目时,可以显示相应的图片。
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);
}
}
}
答:
程序用不同的红色绘制10个小方块。
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);
}
}
答:
程序沿着窗口内的边框绘制矩形,在矩形内绘制一个x,窗口开始大小为200*200,每用鼠标点击一次窗口变大,大至500*500时,点击又开始变小,直到原始大小。
这一过程不断重复。
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.请编写方法int[]cubeArray(int[]a),返回一个新数组b,数组b的长度与参数数组的长度相同,其元素的值是参数数组对应各元素值的立方。
答:
int[]cubeArray(int[]a){
int[]b=newint[a.length];
for(inti;ib[i]=a[i]*a[i]*a[i];
}
returnb;
}
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){
//请在以下位置编写代码(例题Example5_9)
if(e.getSource()==b1){
Strings=textA.getText();
StringTokenizertokens=newStringTokenizer(s);
intn=tokens.countTokens();
intsum=0;
inti;
for(i=0;i<=n-1;i++){
Stringtemp=tokens.nextToken();
sum+=Integer.parseInt(temp);
}
textF.setText(""+sum);
}
elseif(e.getSource()==b2){
textA.setText(null);
textF.setText(null);
}
}
}