北理珠 课后练习答案.docx

上传人:b****5 文档编号:12028296 上传时间:2023-04-16 格式:DOCX 页数:22 大小:37.43KB
下载 相关 举报
北理珠 课后练习答案.docx_第1页
第1页 / 共22页
北理珠 课后练习答案.docx_第2页
第2页 / 共22页
北理珠 课后练习答案.docx_第3页
第3页 / 共22页
北理珠 课后练习答案.docx_第4页
第4页 / 共22页
北理珠 课后练习答案.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

北理珠 课后练习答案.docx

《北理珠 课后练习答案.docx》由会员分享,可在线阅读,更多相关《北理珠 课后练习答案.docx(22页珍藏版)》请在冰豆网上搜索。

北理珠 课后练习答案.docx

北理珠课后练习答案

课后练习答案

第1章泛型和泛型接口

一、选择题

1.给定下列java代码:

importjava.util.*;

publicclassLetterASort{

publicstaticvoidmain(String[]args){

ArrayListstrings=newArrayList();

strings.add("aAaA");

strings.add("AaA");

strings.add("aAa");

strings.add("AAaa");

Collections.sort(strings);

for(Strings:

strings){

System.out.print(s+"");

}

}

}

对该程序编译运行,结果是(C)。

A.编译失败

B.aAaAaAaAAaaAaA

C.AAaaAaAaAaaAaA

D.AaAAAaaaAaAaAa

E.aAaAaAaAaAAAaa

F.运行时抛出异常

2.给定下列java代码:

//在这里插入

privateNmin,max;

publicNgetMin(){returnmin;}

publicNgetMax(){returnmax;}

publicvoidadd(Nadded){

if(min==null||added.doubleValue()

min=added;

if(max==null||added.doubleValue()>max.doubleValue())

max=added;

}

}

选择以下哪两行中任一行插入指定位置,程序可以通过编译。

(AF)

A.publicclassMinMax{

B.publicclassMinMax

extendsNumber>{

C.publicclassMinMax{

D.publicclassMinMax

>{

E.publicclassMinMax

extendsObject>{

F.publicclassMinMax{

3.给定下列java代码:

importjava.util.*;

publicclassOld{

publicstaticObjectget(Listlist){

returnlist.get(0);

}

}

以下选项中,哪三个能编译成功?

(ADE)

A.Objecto=Old.get(newLinkedList());

B.Objecto=Old.get(newLinkedList

>());

C.Strings=Old.get(newLinkedList());

D.Objecto=Old.get(newLinkedList());

E.Strings=(String)Old.get(newLinkedList());

4.给定下列java代码:

publicvoidtakeList(List

extendsString>list){

//在这里插入

}

将以下哪些语句插入指定位置,能够编译成功?

(BDE)

A.list.add("STRING");

B.list=newArrayList();

C.list=newArrayList();

D.Strings=list.get(0);

E.Objecto=list;

5.给定下列java代码:

publicclassScoreimplementsComparable{

privateintwins,losses;

publicScore(intw,int1){wins=w;losses=1;}

publicintgetWins(){returnwins;}

publicintgetLosses(){returnlosses;}

publicStringtoString(){

return"<"+wins+","+losses+">";

}

//在这里插入代码

}

以下哪个方法能完成这个类?

(B)

A.publicintcompareTo(Objecto){/*这里是实现代码*/}

B.publicintcompareTo(Scoreother){/*这里是实现代码*/}

C.publicintcompare(Scores1,Scores2){/*这里是实现代码*/}

D.publicintcompare(Objecto1,Objecto2){/*这里是实现代码*/}

6.给定下列java代码:

publicstaticvoidappend(Listlist){list.add(”0042”);}

publicstaticvoidmain(String[]args){

ListintList=newArrayList();

append(intList);

System.out.println(intList.get(0));

}

对该程序编译运行,结果是(B)。

A.42

B.0042

C.运行时发生异常

D.编译错误

二、阅读程序,并填空。

1.有以下程序:

publicclassGen{

privateTobject;

publicGen_(Tobject){

this.object=object;

}

publicTgetObject(){

returnobject;

}

publicstaticvoidmain(String[]args){

Genstr=newGen(“[answer]”);

Genintg=newGen(42);

System.out.println(str.getObject()+“=”+intg.getObject());

}

}

该程序运行结果为42,请将以下选项填入下划线内。

注意每个选项均可重复选择。

A.Gen

B.Gen

>

C.Gen

D.?

E.T

2.有以下程序:

importjava.util.*;

publicclassMyIntimplementsComparable{

privateinti;

publicMyInt(inti){this.i=i;}

publicStringtoString(){returnInteger.toString(i);}

publicintcompareTo(Objecto){

MyInti2=(MyInt)o;

returni-i2.i;

}

publicstaticvoidmain(String[]args){

ArrayListlist=newArrayList();

list.add(newMyInt

(2));

list.add(newMyInt

(1));

Collections.sort(list);

System.out.println(list);

}

}

该程序运行结果为[1,2],请将以下选项填入下划线内。

A.implements

B.Object

C.Comparable

D.protected

E.public

F.i-i2.i

G.i

H.i2.i–i

I.compare(MyInto,MyInti2)

J.compare(Objecto,Objecti2)

K.compareTo(MyInto)

L.compareTo(Objecto)

第2章序列化和反序列化

一、选择题

1、下面关于java.io.Serializable的说法哪个不正确?

(C)

A.一个对象在一个JVM被序列化后,可以在另外一个JVM被反序列化

B.声明成transient的数据成员不能被序列化和反序列化

C.声明成static的数据成员,因为该数据成员是对象内部的成员,所以仍然可以被序列化

D.如果一个父类可以被序列化,则所有继承该类的子类也可以被序列化

2、分析下面给出的代码

publicclassForestimplementsSerializable{

privateTreetree=newTree();

publicstaticvoidmain(String[]args){

Forestf=newForest();

try{

FileOutputStreamfs=newFileOutputStream("Forest.ser");

ObjectOutputStreamos=newObjectOutputStream(fs);

os.writeObject(f);

os.close();

}catch(Exceptionex){

ex.printStackTrace();

}

}

}

classTree{

}

结果是什么?

(B)

A.代码不能编译

B.代码可以编译,运行时抛出异常

C.一个Forest实例被序列化

D.一个Forest实例和Tree实例都被序列化

3、分析下面的代码:

1.importjava.io.*;

2.publicclassFooimplementsSerializable{

3.publicintx,y;

4.publicFoo(intx,inty){this.x=x;this.y=y;}

5.

6.privatevoidwriteObject(ObjctOutputStreams)

7.throwsIOException{

8.s.writeInt(x);s.writeInt(y);

9.}

10.

11.privatevoidreadObject(ObjectInputStreams)

12.throwsIOException,ClassNotFoundException{

13.

14.//insertcodehere

15.

16.}

17.}

下面给出的选择中,在14行处插入哪些代码,可以使该类实现正确的序列化和反序列化(D)

A.s.defaultReadObject();

B.this=s.defaultReadObject(),

C.y=s.readInt();x=s.readInt();

D.x=s.readInt();y=s.readInt();

4、假定下面代码中的serializeBanana()和deserializeBanana()方法可以正确的执行,分析下面的代码:

importjava.io.*;

classFoodimplementsSerializable{

intgood=3;

}

classFruitextendsFood{

intjuice=5;

}

publicclassBananaextendsFruit{

intyellow=4;

publicstaticvoidmain(String[]args){

Bananab=newBanana();

Bananab2=newBanana();

b.serializeBanana(b);//assumecorrectserialization

b2=b.deserializeBanana();//assumecorrect

System.out.println("restore"+b2.yellow+b2.juice+b2.good);

}

//moreBananamethodsgohere

}

结果是什么?

(C)

A.restore400

B.restore403

C.restore453

D.Compilationfails

第3章GUI图形用户界面编程

一、选择题

1.以下哪个不是Swing容器组件?

(C)

A.JFrame

B.JPanel

C.JTextArea

D.JScrollPane

2.如果想在界面上创建一个如图3-47所示的效果,需要拖放哪些组件?

(CD)(选两项)

图3-47界面

A.JComboBox

B.JTextField

C.JTextArea

D.JScrollPane

3.以下哪个不是Java事件处理机制的元素?

(D)

A.事件

B.事件监听器

C.事件源

D.事件处理程序

4.以下关于布局管理器哪句是错误的?

(D)

A.FlowLayout将组件按顺序从左到右、从上到下进行排列

B.BorderLayout布局将组件按照上、下、左、右、中进行排列

C.GridLayout布局将组件按照行和列的矩阵进行排列

D.BorderLayout布局中允许放置多于5个的组件

5.JBuilder中哪个窗格显示程序的结构和语法错误信息?

(B)

A.消息窗格

B.结构窗格

C.内容窗格

D.工程窗格

6.JBuilder中哪个窗格显示当前工程的结构?

(D)

A.消息窗格

B.结构窗格

C.内容窗格

D.工程窗格

7.以下那句描述不正确?

(D)

A.Swing组件是在AWT基础上发展起来的

B.Swing组件是纯Java的轻量型组件

C.所有的Swing组件均已“J”开头

D.Swing组件所在的包在java.swing中

8.哪个组件可以从一组选项中选择多个选项?

(C)

A.JRadioButton

B.JComboBox

C.JCheckBox

D.JTextField

9.以下哪一个是JTable的父类?

(A)

A.JComponent

B.JContainer

C.Component

D.Container

10.以下菜单类中哪个是父类?

(D)

A.JCheckBoxMenuItem

B.JRadioButtonMenuItem

C.JMenu

D.JMenuItem

第4章JDBC数据库编程

一、选择题

1.用于创建数据库连接的接口是哪个?

(B)

A.Connection

B.DriverManager

C.Statement

D.ResultSet

2.用于执行SQL语句并返回执行结果的接口是哪个?

(C)

A.Connection

B.DriverManager

C.Statement

D.ResultSet

3.用于保存查询结果的接口是哪个?

(D)

A.Connection

B.DriverManager

C.Statement

D.ResultSet

4.访问数据库必须要捕获的异常是哪个?

(B)

A.IOException

B.SQLException

C.ClassNotFoundException

D.EOFException

5.以下哪个不是使用预编译接口的优点?

(D)

A.速度快

B.一次编译,多次执行

C.效率高

D.代码量少

二、简答题

1.简述JDBC技术连接数据库的优点。

答:

JDBC(JavaDatabaseConnectivity,Java数据库连接)技术是Sun公司推出的一种专门访问数据库的API。

它是由一组用Java编程语言编写的类和接口组成,支持基本SQL语句,提供多样化的数据库连接方式,可连接不同的数据库。

JDBC技术是用来Java语言编写的访问数据库标准接口,使用这样的API编写的应用程序无论从安全性、健壮性、可移植性都是具有优势的

2.简述JDBC-ODBC桥连接和纯Java方式连接数据库的不同之处。

答:

纯Java方式连接和JDBC-ODBC桥连接数据库有以下不同之处:

JDBC-ODBC桥连接需要创建数据库,而纯Java方式连接不需要建立数据源.

JDBC-ODBC桥连接的驱动程序字符串是:

sun.jdbc.odbc.JdbcOdbcDriver;而纯Java方式连接的驱动程序字符串是:

com.microsoft.jdbc.sqlserver.SQLServerDriver

JDBC-ODBC桥连接的URL是:

jdbc:

odbc:

数据源;而纯Java方式连接的URL是:

jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=数据库名

纯Java方式连接SQLServer2000数据库必须打SP3以上的补丁;而连接SQLServer2005数据库无需打补丁。

3.简述查询一个名为MyDB的SQLServer2000数据库里Users表中数据的步骤,并写出代码。

4.//导入java.sql包

5.importjava.sql.*;

6.publicclassDBAccess{

7.publicstaticConnectionJavaCon(){

8.try{

9.//加载驱动程序

10.Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

11.//创建数据库连接

12.Stringurl="jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=MyDB";

13.Connectionconn=DriverManager.getConnection(url,"sa","");

14.returnconn;

15.}catch(ClassNotFoundExceptionex1){

16.//捕获ClassNotFoundException异常

17.ex1.printStackTrace();

18.returnnull;

19.}catch(SQLExceptionex2){

20.//捕获SQLException异常

21.ex2.printStackTrace();

22.returnnull;

23.}

24.}

25.}

26.publicstaticvoidmain(String[]args){

27.//调用纯Java方式连接数据库

28.Connectionconn=JavaCon();

29.try{

30.//在连接对象的基础上创建会话对象

31.Statementstmt=conn.createStatement();

32.Stringsql="Select*fromUsers";

33.//执行查询SQL语句,返回查询的结果集

34.ResultSetrs=stmt.executeQuery(sql);

35.//rs结果集中还有下一条记录

36.while(rs.next()){

37.//声明保存查询结果集中每行数据的Vector对象

38.Vectorline=newVector();

39.//将查询结果集中的每行数据保存到line对象里

40.for(inti=1;i<=4;i++){

41.line.add(rs.getObject(i));

42.}

43.//将每行数据的line对象添加到data对象中

44.data.add(line);

45.}

46.//关闭结果集

47.rs.close();

48.//关闭会话对象

49.stmt.close();

50.//关闭连接对象

51.conn.close();

52.returndata;

53.}catch(SQLExceptionex){

54.ex.printStackTrace();

55.returnnull;

56.}

57.}

58.}

第5章Java中的多线程

一、选择题

1、线程同步的方法有多种,下面不正确的是(A)。

A.setPriority()方法B.sleep()方法C.notify()方法D.notifyAll()方法

2、线程被阻塞可能是多方面原因造成的,下面方法中哪一种不能引起线程阻塞(D)。

A.调用sleep()方法,使线程进入睡眠状态。

B.用suspend()方法暂停纯种的执行。

C.用wait()方法暂停线程的执行。

D.调用setPriority()方法。

3、下面不是产生死锁的必要条件的是(B)。

A.互斥条件B.不可抢占C.占有CPU并运行D.循环等待

4、下面哪个操作不能使线程从等待阻塞状态进入到对象阻塞状态(D)。

A.等待阻塞状态下的线程被notify()方法调用。

B.等待阻塞状态下的线程被Interrupt()方法中断。

C.等待时间到。

D.等待阻塞状态下的线程调用wait()方法。

5、下面说法错误的是(B)。

A.java中的每一个线程都属于某个线程组。

B.线程只能在其创建时设置其线程组。

C.线程创建之后,可以从一个线程组转移到另一个线程组。

D.新建线程默认情况下属于其父线程所属的线程组。

二、问答题(略)

1、举例说明什么是多线程?

2、纯种与进程相比,有什么优越性?

3、

展开阅读全文
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1