面向对象程序的设计复习试题.docx
《面向对象程序的设计复习试题.docx》由会员分享,可在线阅读,更多相关《面向对象程序的设计复习试题.docx(53页珍藏版)》请在冰豆网上搜索。
![面向对象程序的设计复习试题.docx](https://file1.bdocx.com/fileroot1/2022-11/26/92912d66-e605-43a2-9133-d43215286d64/92912d66-e605-43a2-9133-d43215286d641.gif)
面向对象程序的设计复习试题
第一章异常处理
一、选择题
1.java中用来抛出异常的关键字是
A、tryB、catchC、throwD、finally
2.关于异常,下列说法正确的是
A、异常是一种对象
B、一旦程序运行,异常将被创建
C、为了保证程序运行速度,要尽量避免异常控制
D、以上说法都不对
3.()类是所有异常类的父类。
A、ThrowableB、ErrorC、ExceptionD、AWTError
4.java语言中,下列哪一子句是异常处理的出口
A、try{…}子句B、catch{…}子句
C、finally{…}子句D、以上说法都不对
5.下列程序的执行,说法正确的是
publicclassMultiCatch
{
publicstaticvoidmain(Stringargs[])
{
try
{
inta=args.length;
intb=42/a;
intc[]={1};
c[42]=99;
System.out.println(“b=”+b);
}
catch(ArithmeticExceptione)
{
System.out.println(“除0异常:
”+e);
}
catch(ArrayIndexOutOfBoundsExceptione)
{
System.out.println(“数组超越边界异常:
”+e);
}
}
}
A、程序将输出第15行的异常信息
B、程序第10行出错
C、程序将输出“b=42”
D、程序将输出第15和19行的异常信息
6.下列程序的执行,说法正确的是
classExMulti{
staticvoidprocedure(){
try{
intc[]={1};
c[42]=99;
}
catch(ArrayIndexOutOfBoundsExceptione){
System.out.println(“数组超越界限异常:
”+e);
}
}
publicstaticvoidmain(Stringargs[]){
try{
procedure();
inta=args.length;
intb=42/a;
System.out.println(“b=”+b);
}catch(ArithmeticExceptione){
System.out.println(“除0异常:
”+e);
}
}
}
A、程序只输出第12行的异常信息
B、程序只输出第26行的异常信息
C、程序将不输出异常信息
D、程序将输出第12行和第26行的异常信息
7.下面程序抛出了一个“异常”并捕捉它。
请在横线处填入适当容完成程序。
classTrowsDemo
{
staticvoidprocedure()throwsIllegalAccessException
{
System.out.println(“insideprocedure”);
throw____new___IllegalAccessException(“demo”);
}
publicstaticvoidmain(Stringargs[])
{
try
{
procedure();
}
___________
{
System.out.println(“捕获:
”+e);
}
}
8.对于catch子句的排列,下列哪种是正确的()
A、父类在先,子类在后
B、子类在先,父类在后
C、有继承关系的异常不能在同一个try程序段
D、先有子类,其他如何排列都无关
9.在异常处理中,如释放资源、关闭文件、关闭数据库等由()来完成。
A、try子句 B、catch子句
C、finally子句 D、throw子句
10.当方法遇到异常又不知如何处理时,下列哪种说法是正确的()
A、捕获异常 B、抛出异常
C、声明异常 D、嵌套异常
11.哪个关键字可以抛出异常?
A、transientB、finallyC、throw D、static
12.一个异常将终止()
A、整个程序 B、只终止抛出异常的方法
C、产生异常的try块 D、×上面的说法都不对
二、填空题
1、catch子句都带一个参数,该参数是某个异常的类及其变量名,catch用该参数去与____异常__对象的类进行匹配。
2、java虚拟机能自动处理______RuntimeException_____异常。
3、捕获异常要求在程序的方法中预先声明,在调用方法时用try-catch-__finally____语句捕获并处理。
4、java语言认为那些可预料和不可预料的出错称为__Throwable_____
5、按异常处理不同可以分为运行异常、捕获异常、声明异常和___自定义异常___几种。
6、抛出异常、生成异常对象都可以通过Throws句实现。
7、捕获异常的统一出口通过___finally____语句实现。
8、java语言的类库中提供了一个___Throwable__类,所有的异常都必须是它的实例或它子类的实例。
9、Throwable类有两个子类:
______Error____类和Exception类。
10、对程序语言而言,一般有编译错误和____运行____错误两类。
11、下面程序定义了一个字符串数组,并打印输出,捕获数组超越界限异常。
请在横线处填入适当的容完成程序。
publicclassHelloWorld
{
inti=0;
Stringgreetings[]= {
“Helloworld!
”,
“No,Imeanit!
”,
“HELLOWORLD!
!
”
};
while(i<4)
{
____try____
{
System.out.println(greeting[i]);
}
____catch____(ArrayIndexOutOfBoundsExceptione)
{
System.out.println(“Re-settingIndexValue”);
i=-1;}
finally
{
System.out.println(“Thisisalwaysprinted”);
}
i++;
}
}
三、判断题
1.(f)程序中抛出异常时(throw…),只能抛出自己定义的异常对象。
或子类的实例!
2.(t)一个异常处理中finally语句块只能有一个或者可以没有。
3.(t)异常类对象代表当前出现的一个具体异常。
4.(t)java语言中的所有异常类都是java.lang.Throwable的子类。
5.(f)如果异常发生时,没有捕获异常的代码,程序会正常执行。
四、编程题
1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。
[提示:
用错误数据测试,即可得到异常类名,运行时主方法参数输入abc测试]
publicclassStringIndexOutOf
{
publicstaticvoidmain(Stringargs[])
{
System.out.println("字符串索引越界异常");
Stringstr=args[0];System.out.println(“第四个字符为”+str.charAt(3));
intaa=Integer.parseInt(args[0]);System.out.println(“平方为”+aa*aa);
}
}
2.从命令行得到5个整数,放入一整型数组,然后打印输出,要求:
如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。
3.写一个方法voidsanjiao(inta,intb,intc),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
第二章图形用户界面
一、判断题
1.BorderLayout是面板的缺省布局管理器。
(t)
2.当鼠标指针位于一个GUI构件的边上时,发生一个MouseOver事件。
(f)
3.一个面板(JPanel)不能被加入到另一个面板(JPanel)中。
()
4.在BorderLayout中,添加到NORTH区的两个按钮将并排显示。
()
5.在使用BorderLayout时,最多可以使用5个构件。
()
6.Swing构件经常被称为轻量构件。
()
7.在GUI上输出文本或提示信息的方法是使用标签。
()
8.为了处理图形用户界面的事件,程序员必须注册一事件监听器。
()
9.用户在JtextField和JpasswordField输入数据后键入回车键,可以激活一个事件。
()
10.JCheckBox类和JRadioButton类都是JtoggleButtond的子类。
()
11.程序员在创建一个Frame时,至少必须创建一个菜单,并将它加入Frame中。
()
12.fill变量属于GrideLayout类。
()
13.在一个程序中不能同时使用Jframe和applet。
()
14.Jframe和applet的左上角坐标为(0,0)。
()
15.JTextArea的文本总是只读的。
()
16.JTextArea类是Component类的直接子类。
()
17.Box的缺省布局是BoxLayout。
()
18.JTextArea用于支持对多行文本的操作。
()
19.程序员可以在任何时候用JScrollPane类的setHorizontalScrollBarPolicy方法和
setVerticalScrollBarPolicy方法来设置JScrollPane的水平滚动条和垂直滚动条。
()
20.JPanel只能用来作为接受鼠标事件的专用绘图区域。
()
二、选择题
1.鼠标被移动时会调用▁▁方法,并且注册一个事件监听器处理此事件。
AactionPerformed
BaddItemListener
CmouseMove
Dadd
2.用户不能修改的文本是▁▁。
Aword文档
Btxt文档
C可编辑的
D不可编辑的
3.▁▁用来在Container上排列GUI构件。
ABorderLayout类
BComponent类
C事件控制
D布局管理器
4.为添加一个构件的add方法是▁▁类方法。
ABorderLayout
BComponent
CContainer
DButtonGroup
5.使用方法▁▁为构件容器设置布局管理器。
ABorderLayout
BsetLayout
CContainer
DComponent
6.GUI是▁▁的缩写。
A布局管理器
B资源管理器
C用户界面布局
D图形用户界面
7.mouseDragged事件先触发了一个▁▁事件接着又触发一个▁▁。
AmousePressed
BmouseClicked
CmouseReleased
DmouseEntered
8.Java程序的图形用户界面中有那些用户自定义成分?
A几何图形
B文字
C颜色控制
D图像
E.动画
9.当构件中按钮的位置可以被自动调整,应使用哪种布局管理器:
ABorderLayout
BFlowLayout
CCardLayout
DGridLayout
11.使用▁▁类创建菜单对象。
ADimension
BJMenu
CJMenuItem
DJTextArea
12.使用▁▁方法创建菜单中的分隔条。
AsetEditable
BChangeListener
Cadd
DaddSeparator
13.向JTextArea的▁▁方法传递false参数可以防止用户修改文本。
AsetEditable
BChangeListener
Cadd
DaddSeparator
17.下面哪个菜单组件可以被添加到任何组件中:
AMenuBar
BHelpMenu
CCheckboxMenuItem
DPopMenu
EMenu
18.下面哪个组件是独立的组件:
APanel
BWindow
CFrame
DScrollPanel
EFileDialog
20.下面哪个布局管理器是非法的:
AFlowLayout
BBorderLayout
CCardBagLayout
DGridLayout
21.实现下列哪个接口可以对TextField对象的事件进行监听和处理?
____
AMouseMotionListener
BFocusListener
CActionListener
DWindowListener
22.Frame的默认的布局管理器是下列哪一个?
____
AFlowLayout
BCardLayout
CGridLayout
DBorderLayout
23.下列哪个属于容器的构件?
___________
AJPnel
BJButton
CJFrame
DJApplet
24.如果希望所有的控件在界面上均匀排列,应使用下列哪种布局管理器?
_____
ABoxLayout
BFlowLayout
CBorderLayout
DGridLayout
25.监听事件和处理事件____。
A都由Listener完成
B由Listener和窗口分别完成
C由Listener和构件分别完成
D都由相应事件Listener处登记过的构件完成
26.监听器接口的方法返回值是什么?
Aint
BString
Cvoid
DObject
27.请问如下哪个方法可以将MenuBar加入Frame中?
AsetMenu()
BsetMenuBar()
Cadd()
DaddMenuBar()
三、简述题
1.什么是图形用户界面?
它与字符界面有何不同?
你是否使用过这两种界面?
试列出图形用
户界面中你使用过的组件。
2.简述图形界面的构成成分以及它们各自的作用。
设计和实现图形用户界面的工作主要有那两
项?
3.简述Java的事件处理机制和委托事件模型。
什么是事件源?
什么是监听者?
Java的图形
用户界面中,谁可以充当事件源?
谁可以充当监听者?
4.动作事件的事件源可以有那些?
如何响应动作事件?
5.找出下面语句中的错误,并说明如何改正。
①buttonName=Jbutton(“Caption”);
②JLableaLable,JLable;//createreferences;
③txtField=newJtextField(50,“DefaultText”);
④Containerc=getContentPane();
SetLayout(newGrideLayout(9,9));
button1=newJButton(“NorthStar”);
button2=newJbutton(“SouthPole”);
Cadd(button1);
Cadd(button2);
6.文本框与文本区域在创建方法、常用方法和事件响应上有何异同?
什么操作将引发文本事
件?
如何响应文本事件?
编写Applet包括一个文本框、一个文本区域和一个按钮,当用户单
击按钮时,程序将文本区域中被选中的字符串复制到文本框中。
7.什么是选择事件?
那些操作将引发选择事件?
可能产生选择事件的GUI组件有那些?
它们之间有什么异同?
分别适合于什么场合?
8.什么是调整事件?
调整事件与选择事件有何不同?
什么是滚动条/如何创建和使用滚动
条?
9.什么是容器的布局策略?
试列举并简述Java中常用的几种布局策略。
10.找出下面语句中的错误,并说明如何改。
①Jmenubarb;
②mySlider=Jslider(1000,222,100,450);
③gbCfill=GridBagConstraints.NORTHWEST;//setfill
④//overridetopaintonacustomizedSwingcomponent
publicvoidpaintcomponent(Graphicsg)
{
g.drawString(“HELLO”,50,50);
}
⑤//createaJFrameanddisplayit
JFramef=newJFrame(“AWindow”);
f.show();
四、编程题
1.编辑一个小程序,显示一个半径为150的圆接五角星,要求圆为黄色填充,五角星为红色,背景为蓝色,在图片的正下方显示文字“圆接五角星”,字体为楷体12号,白色,在下方画一个边框为5,长300,高的红色矩形。
2.编辑一个小程序,界面上加入一个标签,显示容为你的和班级,并注明是xx月xx
日作业,在标签下面增加列表、两个单选框(控制列表是否为多选状态),一个文本框,三个按钮,分别控制将文本框的容加入列表、删除、删除全部列表容,当选择列表时,按照当前状态(是否多选),在文本框中显示用户选择的列表容。
再加入一个文本区,用来显示用户操作的过程,比如:
您输入了文字XXX,您删除了xxx等。
3.创建一个300×200的窗口,标题为“显示窗口程序”。
4.仿照记事本的GUI编写一个JAVA简易记事本程序。
只要菜单及界面,具体功能除[退出]外均不用实现。
5.编辑一个应用程序,使用GridLayout布局,用两个按钮分别控制当前窗口现实[三行两列]和[两行三列]的标签。
第三章多线程机制
一、判断题
1.如果线程死亡,它便不能运行。
(T)
2.在Java中,高优先级的可运行线程会抢占低优先级线程。
(T)
3.一个线程在调用它的start方法之前,该线程将一直处于出生期。
(T)
4.当调用一个正在进行线程的stop()方法时,该线程便会进入休眠状态。
(F)
5.一个线程可以调用yield方法使其他线程有机会运行。
(T)
6.线程可以调用yield方法使低优先级的线程运行。
(F)
二、选择题
1.Java语言中提供了一个▁D▁线程,自动回收动态分配的存。
A异步
B消费者
C守护
D垃圾收集
2.Java语言避免了大多数的▁▁C▁▁错误。
A数组下标越界
B算术溢出
C存泄漏
D非法的方法参数
3.有三种原因可以导致线程不能运行,它们是▁ACD▁▁▁。
A等待
B阻塞
C休眠
D挂起及由于I/O操作而阻塞
4.当▁A▁方法终止时,能使线程进入死亡状态。
Arun
BsetPrority
Cyield
Dsleep
5.用▁B▁方法可以改变线程的优先级。
Arun
BsetPrority
Cyield
Dsleep
6.线程通过▁C▁方法可以使具有相同优先级线程获得处理器。
Arun
BsetPrority
Cyield
Dsleep
7.线程通过▁D▁方法可以休眠一段时间,然后恢复运行。
Arun
BsetPrority
Cyield
Dsleep
8.▁B▁方法使对象等待队列的第一个线程进入就绪状态。
Arun
Bnotify
Cyield
Dsleep
9.方法resume()负责重新开始▁D▁线程的执行。
A被stop()方法停止
B被sleep()方法停止
C被wait()方法停止
D被suspend()方法停止
10.▁BCD▁方法可以用来暂时停止当前线程的运行。
Astop()
Bsleep()
Cwait()
Dsuspend()
三、简述题
1.简述程序、进程和线程之间的关系?
什么是多线程程序?
答:
程序是一段静态的代码,它是应用软件执行的蓝本。
进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程。
每一个进程都有自己独立的一块存空间、一组系统资源。
线程是比进程更小的执行单位。
一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每个线程都有其产生、发展和消亡的过程。
2.线程有那5个基本状态?
它们之间如何转化?
简述线程的生命周期。
答案:
线程有“新建”、“就绪”、“阻塞”、“运行”、“死亡”5个基本状态。
线程对象被创建时进入“新建”状态;程序执行语句启动这个线程后,它进入线程队列排列等待CPU时间片,称为“就绪”状态;等CPU时间和其他资源齐备时就进入“运行”状态;线程运行完毕或者被强制终止则进入“死亡”状态。
上述线程各状态之间的转换