min=x[i];
}
System.out.println(min);
A)125B)5C)98D)168
7、应用程序的main方法中有以下语句,则输出的结果是()。
Hashtablehashtable=newHashtable();
hashtable.put("100","aaa");
hashtable.put("200","bbb");
hashtable.put("300","ccc");
System.out.println(hashtable.get("300").toString()
+hashtable.get("200").toString()
+hashtable.get("100").toString());
A)aaaB)bbbC)cccD)cccbbbaaa
8、以下关于java异常说法不正确的是()。
A)Throwable类是Java语言中Error类和Exception类的父类。
B)当异常对象是Exception类(或其子类)的实例时,能通过Java虚拟机或者throw语句抛出该异常对象,并能通过try…catch…finally处理。
C)如果只用一个catch块捕捉多个异常对象,则catch子句中的参数类型应是所有异常对象的父类。
D)以上说法都不对。
9、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt的内容是()。
importjava.io.*;
publicclassTest{
publicstaticvoidmain(Stringargs[]){
try{
Strings="ABCDE";
byteb[]=s.getBytes();
FileOutputStreamfile=newFileOutputStream("test.txt",true);
file.write(b);
file.close();
}
catch(IOExceptione){
System.out.println(e.toString());
}
}
}
A)ABCABCB)ABCDEC)TestD)ABCDEABCDEABCDE
10、下面说法不正确的是()?
A)列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。
B)List接口是可以包含重复元素的有序集合。
C)Set接口是不包含重复元素的集合。
D)Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。
二、多选题
1、下面哪些关键字能用来控制对类成员的访问()?
A)publicB)protectedC)privateD)default
2、下面关于Java中异常处理try块的说法正确的是()?
A)try块后通常应有一个catch块,用来处理try块中抛出的异常。
B)catch块后必须有finally块。
C)可能抛出异常的方法调用应放在try块中。
D)对抛出的异常的处理必须放在try块中
3、线程对象的生命周期中,通常经历下面哪些状态()。
A)新建B)运行C)就绪D)死亡
4、定义如下的二维数组b,下面的说法正确的是()。
intb[][]={{1,2,3},{4,5},{6,7,8}}};
A)b.length的值是3。
B)b[1].length的值是3。
C)b[1][1]的值是5。
D)二维数组b的第一行有3个元素
5、类B是一个抽象类,类C是类B的非抽象子类,下列创建对象x1的语句中正确的是()。
A)Bx1=newB();B)Bx1=newC();
C)Cx1=newC();D)Cx1=newB();
6、下面关于进程、线程的说法正确的是()。
A)进程是程序的一次动态执行过程。
一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。
B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。
线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。
C)Java多线程的运行与平台相关。
D)对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。
对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。
7、下面关于外部类和内部类成员的相互访问的规则中,正确的选项是()。
A)内部类可以直接访问外部类的成员
B)外部类可以直接访问内部类的成员
C)外部类不能访问内部类的成员
D)外部类可通过创建内部类的实例来访问内部类的成员
三、程序阅读题
1、阅读下面的程序代码,并回答问题(问3分,问3分,共6分)。
Strings1=newString("abcde");
Strings2=newString("abcde");
booleanb1=s1.equals(s2);
booleanb2=s1==s2;
System.out.print(b1+""+b2);
程序段执行后,在命令行的输出结果如何?
解释输出
(1)的结果的原因?
答案:
truefalse
equals方法比较两个字符串的内容是否相等;运算符“==”判断两个对象是否指向同一个引用,即是否为同一个对象。
2、阅读下面的程序,并回答问题(问3分,问3分,共6分)。
importjava.io.*;
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsIOException{
BufferedReaderbuf=newBufferedReader(
newInputStreamReader(System.in));
while(true){
Stringstr=buf.readLine();
if(str.equals("quit"))
break;
intx=Integer.parseInt(str);
System.out.println(x*x);
}
}
}
编译运行上面的程序:
从键盘输入10,回车后输出的结果如何?
从键盘输入exit,回车后程序能正确执行吗?
为什么?
答案:
100
不能;因为方法Integer.parseInt(str)不能将字符串“exit”转化为整数,抛出异常。
3、写出下面的程序编译、运行后的结果(6分)。
publicclassTest{
publicstaticvoidmain(Stringargs[]){
newStudent("Tom",'m',90,88);
newStudent("Jack",'m',66,89);
newStudent("Mary",'f',76,86);
System.out.println("name\tsex\tchinese\tenglish");
Student.print();
}
}
classStudent{
protectedStringname;
protectedcharsex;
protectedintchinese;
protectedintenglish;
protectedStudentnext;
staticStudentlist;
Student(Stringname,charsex,intchinese,intenglish){
this.name=name;
this.sex=sex;
this.chinese=chinese;
this.english=english;
this.next=list;
list=this;
}
staticvoidprint(){
Studentfriend=list;
if(friend==null)
System.out.println("Thelistisempty.");
else{
do{
System.out.println(friend.toString());
friend=friend.next;
}while(friend!
=null);
}
}
publicStringtoString(){
returnnewString(name+"\t"+sex+"\t"+chinese+"\t"+english);
}
}
答案:
namesexchineseenglish
Maryf7686
Jackm6689
Tomm9088
《JAVA程序设计》期末考试试题(六)
一、填空题
1.定义类的保留字是(class),定义接口的保留字是(interface)。
2.Socket通常也称为(套接字),用于描述(IP地址)和(端口)。
3.线程的优先级在
(1)至(10)之间,数值越大(任务越紧急)。
4.构造方法是一种特殊的成员方法,构造方法名与(类名)相同。
5.Java语言只允许单继承,指每个类只能有一个(父类)。
6.Java源程序的扩展名是(.java),经过编译后的程序的扩展名是(.class)。
7.在一个时间只能由一个线程访问的资源称为(临界资源)。
访问临界资源的代码(临界代码)。
8.在多线程系统中,多个线程之间有(同步)和(互斥)两种关系。
二、选择题
1.关于选择结构下列哪个说法正确?
( )
A.if语句和else语句必须成对出现
B.if语句可以没有else语句对应
C.switch结构中每个case语句中必须用break语句
D.switch结构中必须有default语句
2.while循环和do…while循环的区别是:
( )
A.没有区别,这两个结构任何情况下效果一样
B.while循环比do…while循环执行效率高
C.while循环是先循环后判断,所以循环体至少被执行一次
D.do…while循环是先循环后判断,所以循环体至少被执行一次
3.关于for循环和while循环的说法哪个正确?
( )
A.while循环先判断后执行,for循环先执行后判断。
B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果
C.两种循环任何时候都不可以替换
D.两种循环结构中都必须有循环体,循环体不能为空
4.下列修饰符中与访问控制无关的是 ( )
A.private B.public
C.protectedD.final
5.void的含义:
( )
A.方法没有返回值 B.方法体为空
C.没有意义 D. 定义方法时必须使用
6.return语句:
( )
A.只能让方法返回数值 B.方法都必须含有
C.方法中可以有多句return D.不能用来返回对象
7.关于对象成员占用内存的说法哪个正确?
( )
A.同一个类的对象共用同一段内存
B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
C.对象的方法不占用内存
D.以上都不对
8.下列说法哪个正确?
A.不需要定义类,就能创建对象
B.对象中必须有属性和方法
C.属性可以是简单变量,也可以是一个对象
D、属性必须是简单变量
9.下列说法哪个正确?
( )
A、一个程序可以包含多个源文件
B、一个源文件中只能有一个类
C、一个源文件中可以有多个公共类
D、一个源文件只能供一个程序使用
10.关于方法main()的说法哪个正确?
( )
A.方法main()只能放在公共类中
Bmain()的头定义可以根据情况任意更改
C.一个类中可以没有main()方法
D.所有对象的创建都必须放在main()方法中
11.构造函数何时被调用?
( )
A、创建对象时 B、类定义时
C、使用对象的方法时 D、使用对象的属性时
12. 抽象方法:
( )
A、可以有方法体
B、可以出现在非抽象类中
C、是没有方法体的方法
D、抽象类中的方法都是抽象方法
13.关于继承的说法正确的是:
( )
A、子类将继承父类所有的属性和方法。
B、子类将继承父类的非私有属性和方法。
C、子类只继承父类public方法和属性
D、子类只继承父类的方法,而不继承属性
14.关于构造函数的说法哪个正确?
( )
A、一个类只能有一个构造函数
B、一个类可以有多个不同名的构造函数
C、构造函数与类同名
D、构造函数必须自己定义,不能使用父类的构造函数
15.this和super:
A、都可以用在main()方法中
B、都是指一个内存地址
C、不能用在main()方法中
D、意义相同
16.关于super的说法正确的是:
A、是指当前对象的内存地址
B、是指当前对象的父类对象的内存地址
C、是指当前对象的父类
D、可以用在main()方法中
17.覆盖与重载的关系是 ( )
A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
B.覆盖方法可以不同名,而重载方法必须同名
C.final修饰的方法可以被覆盖,但不能被重载
D.覆盖与重载是同一回事
18.关于接口哪个正确?
( )
A、实现一个接口必须实现接口的所有方法
B.一个类只能实现一个接口
C.接口间不能有继承关系
D.接口和抽象类是同一回事
19.异常包含下列哪些内容?
( )
A.程序执行过程中遇到的事先没有预料到的情况
B.程序中的语法错误
C.程序的编译错误
D.以上都是
20. 对于已经被定义过可能抛出异常的语句,在编程时:
( )
A、必须使用try/catch语句处理异常,或用throws将其抛出
B.如果程序错误,必须使用try/catch语句处理异常
C.可以置之不理
D.只能使用try/catch语句处理
21. 字符流与字节流的区别在于( )
A.前者带有缓冲,后者没有
B.前者是块读写,后者是字节读写
C.二者没有区别,可以互换使用
D.每次读写的字节数不同
22.下列流中哪个不属于字节流 ( )
A.FileInputStream
B.BufferedInputStream
C.FilterInputStream
D.InputStreamReader
三、程序填空题
1.publicclassSum{
publicstaticvoidmain(String[]args){
intj=10;
System.out.println("jis:
"+j);
calculate(j);
System.out.println("Atlast,jis:
"+j);
}
staticvoidcalculate(intj){
for(inti=0;i<10;i++)
j++;
System.out.println("jincalculate()is:
"+j);
}
}
输出结果为:
jis:
(1)
jincalculate()is:
(2)
Atlastjis:
(3)
答案:
(1)10;
(2)20;(3)10。
2.按要求填空
abstractclassSuperAbstract{
voida(){…}
abstractvoidb();
abstractintc(inti);
}
interfaceAsSuper
{
voidx();
}
abstractclassSubAbstractextendsSuperAbstractimplementsAsSuper
{
publicvoidb(){…}
abstractStringf();
}
publicclassInheritAbstractextendsSubAbstract{
publicvoidx(){…}
publicintc(inti){…}
publicStringf(){…}
publicstaticvoidmain(Stringargs[]){
InheritAbstractinstance=newInheritAbstract();
instance.x();
instance.a();
instance.b();
instance.c(100);
System.out.println(instance.f());
}
}
在以上这段程序中:
抽象类有:
SuperAbstract和
(1) (写出类名)
非抽象类有:
(2) (写出类名)
接口有:
(3) (写出接口名)
AsSuper中的x()方法是(4)方法,所以在InheritAbstract中必须对它进行(5)
答案:
(1)SuperAbstract;
(2)InheritAbstract;
(3)AsSuper;
(4)抽象;
(5)覆盖和实现。
3.按注释完成程序
publicclassLeaf{
privateinti=0;//此属性值用于检验
Leafincrement(){//定义方法increment(),返回值是Leaf类的对象
i++;
return
(1);//将当前对象的地址作为返回值返回
}
voidprint(){
System.out.println("i="+i);
}
publicstaticvoidmain(Stringargs[]){
Leafx=
(2);//创建Leaf类的对象x
x.increment().increment().increment().print();
}//多次调用方法increment(),返回的都是x的地址,i值表示调用次数
}
输出结果为i=(3)
答案:
(1)this;
(2)newLeaf();
(3)3
4. 按注释提示完成文件复制的程序
//FileStream源代码如下:
importjava.io.*;
classFileStream{
publicstaticvoidmain(Stringargs[]){
try{
FileinFile=newFile("file1.txt");//指定源文件
FileoutFile=newFile("file2.txt");//指定目标文件
FileInputStreamfis=
(1);
FileOutputStreamfos=newFileOutputStream(outFile);
intc;
//逐字节从源文件中输入,再输出到fos流
while((c=fis.read())!
=-1)
(2);
fis.close();
fos.close();
}
catch(Exceptione){
System.out.println("FileStreamsTest:
"+e);
}
}
}
答案:
(1)