java期末复习题(解答)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java期末复习题(解答)
⼀、选择题
1、下列叙述中,正确的是(C)
A)线程与进程在概念上是不相关的
B)⼀个线程可包含多个进程
C)⼀个进程可包含多个线程
D)Java中的线程没有优先级
2、下列Java源程序结构中前三种语句的次序,正确的是(D )
A)import,package,public class
B)import必为⾸,其他不限
C)public class,package,import
D)package,import,public class
3、如果使⽤Thread t=new Test()语句创建⼀个线程,则下列叙述正确的是(B )
A)Test类⼀定要实现Runnable接⼝
B)Test类⼀定是Thread类的⼦类
C)Test类⼀定是Runnable的⼦类
D)Test类⼀定是继承Thread类并且实现Runnable接⼝
4、下列关键字中可以表⽰类不能被继承的是( A )
A)final B)default
C)private D)transient
5、阅读下⾯程序
public class Test implements Runnable {
public static void main(String[] args) {
_______________________
t.start();
}
public void run() {
System.out.println(“Hello”);
}
在程序下划线出填⼊正确选项是( C )
A)Test t=new Test();
B)Thread t=new Thread();
C)Thread t=new Thread(new Test());
D)Test t=new Thread();
6、下列⽅法中可⽤于定义线程体的是( C )
A)start()B)init()
C)run()D)main()
7、Java语⾔能做到“编写⼀次,随处可⽤”,是指Java语⾔具有( B )
A.很⾼的通⽤性 B. 可移植性
C. 解释特性
D. 很⾼的安全性
8、下列标识符合法的是 ( A )
A. _bill_1
B. @email
C. 486_CPU
D. !_not
9、在创建数组时,下列创建的⽅法中合法的是( B )
A.int a[ ] [ ] = new a[10][5] B. int a[ ] = new int[10 ]
C. int [ ]a = new a[10 ]
D. int a[ ] = new a[10 ]
10、在⼀个类中定义的成员变量和成员⽅法时,不允许( D )
A. 成员⽅法中的参数与成员变量名相同
B. 两个成员⽅法名相同
C. 成员变量与成员⽅法名相同
D. 两个成员变量名相同
11、下列语句中,可以作为⽆限循环语句的是( A )
A)for(;;) {} B)for(int i=0; i<10000;i++) {} C)while(false) {} D)do {} while(false) 12、下列表达式中,类型可以作为int型的是( C )
A)“abc”+”efg” B)“abc”+’efg’
C)‘a’+’b’ D)3+”4”
13、在多线程并发程序设计中,能够给对象x加锁的语句是( D )
A)x.wait( ) B)synchronized(x)
C)x.notify( ) D)x.synchronized( )
14、接⼝中,除了抽象⽅法之外,还可以含有( B )
A)变量B)常量
C)成员⽅法D)构造⽅法
15、StringBuffer类字符串对象的长度是( C )
A)固定B)必须⼩于16个字符
C)可变D)必须⼤于16个字符
16、⼦类继承了⽗类的⽅法和状态,在⼦类中可以进⾏的操作是( D )
A)更换⽗类⽅法B)减少⽗类⽅法
C)减少⽗类变量D)添加⽅法
17、继承是⾯向对象编程的⼀个重要特征,它可降低程序的复杂性并使代码
( B )A)可读性好B)可重⽤
C)可跨包访问D)运⾏更安全
18、使⽤DriverManager类的( A )⽅法连接数据库
A)getConnection()B)forName
C)join()D)creatConnection()
19、在Java⽹络编程中,要获取本机的地址可以使⽤InetAddress类的
( B )⽅法。
A)getHostName()B)getLocalHost()
C)getByName()D)getHostAddress()
20、⽤来向数据库DBMS发送SQL的JDBC类是( A )
A)Statement B)Connection
C)DriverManager D)ResultSet
21、⾃定义异常类的⽗类可以是( C )
A)Error B)VirtuaMachineError
C)Exception D)Thread
22、下列语句⽤来实现数据库操作的正确顺序为( B )。
(1)Connection con=DriverManager.getConnection(url,””,””);
(2)ResultSet rs=stmt.executeQuery(“select * from users”);
(3)Statement stmt=con.creatStatement();
(4)Class.forNmae(“sun.jdbc.odbc.jdbcOdbcDriver”);
A)(1)(2)(3)(4) B)(4)(1)(3)(2)
C)(4)(3)(1)(2) D)(1)(3)(2)(4)
23、在基于Socket的C/S通信中,服务器端监听客户端请求可以使⽤
ServerSocket类的( C )⽅法
A)getPort()B)getInputStream()
C)accept()D)close()
24、使新创建的线程参与运⾏调度的⽅法是( B )
A)run()B)start()
C)init()D)resume()
25、⼀个⼦类继承⽗类,⼦类不可以继承⽗类中访问权限设定为( A )的变量和⽅法。
A. private
C. public
D. protected
26、在异常处理中,如释放资源、关闭⽂件、关闭数据库等由( C )来
完成。
A.try⼦句B.catch⼦句
C.finally⼦句D.throw⼦句
27、下列哪些语句关于JAVA中内存回收的说明是正确的? ( B )
A.程序员必须创建⼀个线程来释放内存
B.垃圾回收器负责释放⽆⽤内存
C.内存回收程序允许程序员直接释放内存
D.内存回收程序可以在指定的时间释放内存对象
28、下列运算符合法的是____。
(A )
A.&&
B.<>
C.if
D.:=
29、下列哪⼀种叙述是正确的____。
( D )
A.abstract修饰符可修饰字段、⽅法和类
B.抽象⽅法的body部分必须⽤⼀对⼤括号{ }包住
C.声明抽象⽅法,⼤括号可有可⽆
D.声明抽象⽅法不可写出⼤括号
30、当某⼀线程正处于休眠状态,⽽另⼀个线程⽤Thread 类中的interrupt() ⽅法中断它时,抛出的异常类型是______。
( C )
A.IOException
B.RuntimeException
C.InterruptedException
D.ClassNotFoundException
31、下列语句序列执⾏后,num的值是____。
( A )
Random rd1=new Random();
int num=Math.abs(rd.nextInt())%4+1;
A.1~4之间的随机值
B.0~3之间的随机值
C.0
D. 4
32、_________关键字可以对对象加互斥锁。
( B )
B.synchronized
C.serialize
D.static
⼆、填空题
1、Java中的线程体是由线程类的 run() ⽅法进⾏定义的,线程运⾏也是从该⽅法开始执⾏。
2、类的实例变量在___创建对象_____________时候会被分配内存空间。
3、在Java中若定义抽象类则需要加关键字 abstract 来修饰。
4、按照Java中的命名约定,⽅法名的起始字母⼀般都是⼩写,但是_构造__ ⽅法例外。
5、java接⼝内的⽅法都是公共的、抽象的,实现接⼝就要实现接
⼝内的所有⽅法。
6、类是java程序的基本单元。
7、⼀个线程执⾏完run⽅法后,进⼊___死亡________状态。
8、接⼝中能定义抽象⽅法和___常量_________。
9、在Java中,所有的类都是通过直接或间接地继承 _Object__⽗类得到的。
10、创建⼀个名为 MyPackage 的包的语句是_package MyPackage________,
该语句应该放在程序的位置为程序第⼀句。
11、Java中布尔类型的变量值有 ____true_____ 和false 。
12、⽗类的final⽅法____不可以_________被⼦类重写。
13、下列程序输出结果是_____⼯作顺利__________。
class Cry {
public void cry() {
System.out.println(“⼤家好“);
}
}
public E {
public static void main(String args[]) {
Cry hello=new Cry() {
public void cry () {
System.out.println(“⼯作顺利”);
}
};
hello.cry();
}
}
14、下列程序输出结果是__你好fine thanks _____________。
public class E {
public static void main(String [] args) {
try {
methodA()’
}
catch(IOException) {
System.out.print(“你好”);
Return;
}
finally {
System.ou.println(“fine thanks”);
}
}
public static void methodA() throws IOException {
throw new IOException();
}
}
15、下列程序输出结果是: _____15.0__________
______8.0_________
class A {
double f(double x,double y) {
return x+y;
}
}
class B extends A {
double f(int x, int y) {
return x*y;
}
}
public E {
public static void main(String[] args) {
B b=new B();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
}
}
16、如果在定义类时,出于安全等⽅⾯的考虑,限定该类不能被其它类继承,
则在定义该类时加关键字 final 来修饰。
17、Java中的线程体是由线程类的 run() ⽅法进⾏定义的,线程运⾏也是从该⽅法开始执⾏。
18、若x = 5,y = 10,则x > y和x <= y的逻辑值分别为false和__true______
19、⽤JDK编译Java源程序,使⽤的命令是___javac________,编译源⽂件得到字节码⽂件。
20、开发与运⾏Java程序需要经过的三个主要步骤为编辑源程序、___编译
________和解释运⾏字节码。
21、在Java程序中定义的类有两种成员:_成员变量_____和成员⽅法
22、⼦类继承⽗类时所要使⽤的关键字是 __extends_______。
23、使⽤关键字___char___来定义字符变量。
三、判断题:
1、⼀个进程就是⼀个执⾏中的程序,所以进程共享系统的内存空间和资源。
(T )
2、内部类的外嵌类的成员变量在内部类中仍然有效。
(T)
3、在接⼝定义中可以声明变量。
(F)
4、类中的实例⽅法可以操作类变量,⽽类⽅法也可以操作实例变量。
( F )
5、内部类的类体中可以声明类变量和类⽅法。
( F)
6、⼀个线程进⼊死亡状态后,调⽤isAlive()⽅法返回值是false。
(T)
7、如果采⽤JDBC-ODBC⽅式连接数据库,程序代码中必须使⽤数据库的名
字才能与数据库建⽴连接。
(F)
8、在定义类时,抽象类中的⽅法可以有代码。
( T )
9、在Java语⾔中,允许⼀个类继承⼀个⽗类的内容,也允许继承多个⽗类
的内容。
( F )
11、在Java语⾔中,类的构造⽅法可以重载。
( T )
12、abstract类中只可以有abstract⽅法。
( F)
13、在Java语⾔中即⽀持⼀维数组,也⽀持多维数组。
( T )
14、在Java中不可以同时⽤final和abstract修饰⼀个⽅法。
( T )
15、Date类中的Date(long time)构造⽅法,time的单位是毫秒。
( T)
16、Java语⾔是编译型语⾔。
( T )
17、Java中,File类提供了描述⽂件和⽬录的⽅法。
( T )
18、Java可以通过接⼝机制⽀持多重继承。
( T )
四、简答题:
1、什么叫接⼝的回调?
2、在多线程中,线程同步机制是什么?
3、什么叫⽅法的重载?构造⽅法可以重载吗?
4、在JDBC中事务处理步骤是怎样的?
5、java中异常(Exception)和错误(Error)有什么不同?
6、简述实例变量和类变量的区别。
五、程序题:
1、阅读下⾯程序
class Cry {
public void cry() {
System.out.println(“⼤家好“);
}
}
public E {
public static void main(String args[]) {
Cry hello=new Cry() {
public void cry () {
System.out.println(“⼯作顺利”);
}
};
hello.cry();
}
}
程序运⾏的输出结果是:
2、阅读下⾯程序
public class E {
public static void main(String [] args) {
try {
methodA()’
}
catch(IOException) {
System.out.print(“你好”);
Return;
}
finally {
System.ou.println(“fine thanks”);
}
}
public static void methodA() throws IOException { throw new IOException();
}
}
程序运⾏的输出结果是:
3、阅读下⾯程序:
class A {
double f(double x,double y) {
return x+y;
}
}
class B extends A {
double f(int x, int y) {
return x*y;
}
}
public E {
public static void main(String[] args) {
B b=new B();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
}
}
程序运⾏的输出结果是:
____________________
4、编写程序,创建⼀个Student类,在构造⽅法⾥⾯计算学⽣的平均成绩,由于⽆法确定是两门课还是三门课的平均成绩,所以提供两种不同版本的构造⽅法来创建Student类的对象。
1、阅读下⾯程序
public class E{
public static void main(String args[]){
String str=new String(“苹果“);
modify(str);
System.out.println(str);
}
public static void modify(String s) {
s=s+”好吃”;
}
}
程序运⾏的输出结果是:
5、阅读下⾯程序
public class A {
double f(double x,double y) {
return x+y;
}
static int g(int n) {
Return n*n;
}
}
public class B extends A {
double f(double x,double y) {
double m=super.f(x,y);
return m+x*y;
}
static int g(int n) {
int m=A.g(n);
return m+n;
}
}
public class E{
public static void main(String args[]){ B b=new B();
System.out.println(b.f(10.0,8.0)); System.out.println(b.g(3));
}
}
程序运⾏的输出结果是:
____________________
6、阅读下⾯程序
public class B {
int x=100,y=200;
public void setX(int x) {
x=x;
}
public void setY(int y) {
this.y=y;
}
public int getSum() {
return x+y;
}
}
public class A{
public static void main(String args[]){
B b=new B();
b.setX(-100);
b.sety(-200);
System.out.println(”Sum=”+b.getSum());
}
}
程序运⾏的输出结果是:
7、编写程序,该程序连接到数据源myData,查询goods表中price字段值⼤于的全部记录。
程序运⾏效果如下图10.8(goods 表中的字段为:number:⽂本,name:⽂本,madetime:⽇期/时间,price:数字;另外编程时可能⽤到的Java⽅法如下:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) {;
DriverManager.getConnection("jdbc:odbc:myData","","");
createStatement(); executeQuery("SELECT ……");
getString(); getDate(); getDouble(); catch(SQLException e) ......
8、下⾯程序段的运⾏结果是_____________________________
_____________________________
_____________________________
public class UseArray {
public static void main(String args[]) {
double[] x={1.2,45.9,-7.8,-18.2,12.8};
for(int i=0;i
System.out.print(" x["+i+"]="+x[i]);
System.out.println();
double min=x[0],max=x[0],sum=0.0;
for(int i=0;i
sum+=x[i];
if(x[i]>max)
max=x[i];
if(x[i]
min=x[i];
}
System.out.println("和:\t"+sum);
System.out.println("最⼩值:\t"+min);
System.out.println("最⼤值:\t" +max);
}
}
9、下⾯程序段执⾏后,在命令⾏的输出结果是:___________________________ public class TestBirthday {
public static void main(String args[]) {
Birthday obj1=new Birthday();
obj1.show();
Birthday obj2=new Birthday(1990,11,12);
obj2.show();
}
}
class Birthday {
int year, month, day;//分别表⽰年⽉⽇
Birthday( ) {
}
Birthday(int year, int month, int day) {
this.year=year;
this.month=month;
this.day=day;
}
void show(){
System.out.println("出⽣年⽉:"+year+"年"+month+"⽉"+day+"⽇");
}
}
10、下⾯的程序功能是Random类的使⽤,实现了命令⾏界⾯的猜数⼩游戏,
请填空。
import java.util. Random;
import java.io.*;
public class UseRandom {
public static void main(String args[]) throws IOException {
Random rd1=new _________; //创建随机数类对象
int num=rd1.nextInt(100); //⽣成0~100以内的随机数
System.out.println("猜测⼀个100以内的正整数");
System.out.print("请输⼊您猜的数:");
BufferedReader br=new BufferedReader(
new InputStreamReader(___________));//接收键盘输⼊String s=br.readLine();//读取从键盘输⼊的⼀⾏字符串int guess=________________;//转化为整数:第1次⽤户猜数
int i=1;//存放猜数的次数
while(guess!=num){//没有猜中则继续循环
System.out.println("第"+(i++)+"次猜数"+
guess+(guess>num?"⼤了!":"⼩了!"));
System.out.print("请输⼊您猜的数:");
s=______________;//读取从键盘输⼊的⼀⾏字符串 guess=Integer.parseInt(s);//转化为整数:第i次⽤户猜数}
System.out.println("第"+i+"次猜数"+ __________+",恭喜你猜中!");
}
}
11、P267页练习(8)阅读理解该程序,为什么输出是BA?。