Java程序设计与实践教程王薇主编答案.docx
《Java程序设计与实践教程王薇主编答案.docx》由会员分享,可在线阅读,更多相关《Java程序设计与实践教程王薇主编答案.docx(14页珍藏版)》请在冰豆网上搜索。
Java程序设计与实践教程王薇主编答案
第1章JAVA简介
一、判断题
1.√2.√3.4.5.6.√7.√8.√9.10.
二、填空题
1.ApplicationApplet2.类(字节码文件、目标文件).class3.对象4.主5.J2SEJ2EEJ2ME
三、选择题
1.B2.D3.B4.B5.A
四、简答题
1.参考答案
Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可移植的、编译解释型的、高性能的、多线程的、动态的等等。
2.参考答案
Java程序执行的具体过程如图1所示。
图1Java程序的运行机制
3.参考答案
Java程序在计算机在执行要经历以下几个阶段:
(1)使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(JCreater、Eclipse、MyEclipse等)编辑Java源文件,其文件扩展名为.java。
(2)通过编译使.java的文件生成一个同名的.class文件。
(3)通过解释方式将.class的字节码文件转变为由0和1组成的二进制指令执行。
在以上阶段中可以看出Java程序的执行包括了编译和解释两种方式。
第2章Java语法基础
一、判断题
1.2.√3.4.5.
二、填空题
1.102.单精度双精度3.n%13!
=0?
false:
true
4.接口5.false
三、选择题
1.D2.C3.D4.A5.C
第3章程序流程控制
一、判断题
1.错误2.3.4.5.√
二、填空题
1.循环2.if3.caseswitch
4.whiledo-while5.continue
三、选择题
1.D2.C3.C4.B5.C
第4章数组
一、判断题
1.2.√3.√4.√5.
二、填空题
1.类型2.new3.长度
4.分配空间5.369
三、选择题
1.D2.A3.C4.B5.B
第5章类和对象
一、判断题
1.√2.√3.4.5.√6.7.√8.9.10.√
11.√12.√13.14.15.
二、填空题
1.publicdefault
2.class属性方法
3.publicstaticvoidmain(Stringargs[]){}
4.new
5.主
6.实例实例类类
7.publicprotectedprivate
8.类类子类
9.Myclassintj
10.21
11.99
三、选择题
1.C2.B3.A4.C5.C6.A7.A
第6章类和对象的扩展
一、判断题
1.√2.√3.√4.√5.√6.√7.8.
二、填空题
1.package
2.java.lang
3.thissuper
4.子类父类父类子类
5.extendsjava.lang.object
6.抽象
7.接口重用
三、选择题
1.C2.A3.C4.C5.C
第7章Java常用系统类
一、判断题
1.2.3.4.5.6.7.8.√9.√10.√
11.12.√13.14.15.
二、填空题
1.Object
2.longintlvar=Math.pow(10,10)
3.returnInteger.parseInt(x*y);
4.java.util
5.1
6.12-11
7.结果为:
Boy
8.true
9.s1!
=s2
10.helloworld!
11.no1no2no3
no1no3
12.true
三、选择题
1.C2.B3.A4.C5.D6.C
第8章Java输入输出系统
一、判断题
1.√2.3.√4.√5.√6.√7.√8.9.
二、填空题
1.System.inSystem.out
2.240
3.088
三、选择题
1.D2.D3.A4.BA5.B6.C7.A8.D
四、简答题
1.参考答案
在计算机中,“流”的概念是1984年由C语言第一次引入。
“流”可以看作是一个流动的数据缓冲区。
数据从数据源流向数据目的地。
流在互联网上是串行传送。
最常见的数据源是键盘,最常见的数据目的地是屏幕。
数据流(stream)是一组有顺序的、有起点和终点的字节集合,是对输入和输出的总称和抽象。
Java程序可以打开一个从某数据源(例如键盘、文件等)到程序的一个流,从这个流中读取数据,这就是输入流。
同样,程序可以打开到外界某数据目的地的流,把数据顺序写到该流中,从而把程序中的数据送到外界,这就是输出流。
所有字节输入流的基类是InputStream。
抽象类OutputSteam是所有字节输出类的基类。
文件数据流类FilelnputStream和FileOutputStream用于进行文件的输入输出处理,其数据源和目的地都是文件。
Java通过系统类System实现标准输入输出的功能,定义了3个流变量,分别为in、out和err。
Reader类和Writer类是java.io包中两个字符流类的顶层抽象父类。
2.参考答案
File类的构造方法主要有以下几种:
(1)File(Stringpath)
(2)File(Stringdir,Stringfilename)
(3)File(Filedir,Stringfilename)
(4)File(URLurl)
其中dir是文件所在的目录,filename是文件名,path是文件的路径名。
对文件进行顺序读/写可以利用FileReader类和FileWriter类。
FileReader类是一个以字符方式读取文件内容的Reader类的子类,最常用的构造方法如:
FileReader(Filefileobj)。
FileWriter类是一个以字符方式写文件内容的Writer类的子类,最常用的构造方法如:
FileWriter(Filefileobj),其中filePath是文件的完全路径,fileobj是说明该文件的File对象。
Java提供了一个功能很强大的随机存取文件类RandomAccessFile,它可以实现对文件的随机读写操作。
RandomAccessFile类提供两个构造方法:
(1)publicRandomAccessFile(Stringname,Stringmode)throwsFileNotFoundException
(2)publicRandomAccessFile(Filefile,Stringmode)throwsFileNotFoundException
第9章GUI图形用户界面
一、判断题
1.√2.3.4.√5.6.√
二、填空题
1.BorderLayoutFlowLayout
2.FlowLayoutBorderLayoutCardLayoutGridLayoutGridBogLayoutBoxLayout
3.注册监听者
4.事件源
5.JFrame
三、选择题
1.D2.A3.B4.A5.D
6.B7.C8.C9.D10.D
四、简答题
1.参考答案
java.awt包提供了基本的Java程序的GUI设计工具。
主要包括三个概念:
组件(Component)、容器(Container)和布局管理器(LayoutManager)。
组件(Component)是Java的图形用户界面的最基本组成部分,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象。
容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其他组件和容器。
每个容器都有一个布局管理器(LayoutManager),当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
2.参考答案
使用Swing开发GUI程序需要7个步骤。
(1)引入swing包
(2)选择"外观和感觉"
(3)设置顶层容器
(4)设置按钮和标签
(5)向容器中添加组件
(6)在组件周围添加边界
(7)进行事件处理
3.参考答案
JFrame是与AWT中的Frame相对应的Swing组件。
JFrame上面只能有一个唯一的组件,这个组件为JRootPane,调用JFrame.getContentPane()方法可获得JFrame中内置的JRootPane对象。
面板(JPanel)是一个轻量级容器组件,是一种没有标题的中间容器,用于容纳界面元素,以便在布局管理器的设置下容纳更多的组件,实现容器的嵌套。
JPanel,JScrollPane,JSplitPane和JInternalFrame都属于常用的中间容器,是轻量级组件。
JPanel的默认布局管理器是FlowLayout。
这类容器不能独立存在,必须通过add()方法添加到一个顶层容器或存在于顶层容器的一个中间容器。
4.参考答案
下拉列表框(JComboBox)与列表框相似,它同样是一个有许多选项的选择组件,但下拉列表框中所有选项都被折叠收藏起来,且只会将用户所选择的单个选项显示在显示栏上。
要改变被选中的选项,可以单击下拉列表框右边的向下箭头,然后从伸展开的选项框中选择一个选项即可。
下拉列表框JComboBox继承自JComponent类。
列表框组件JList向用户提供“多选多”的输入选择,列表框通常列出若干选项,可指定列出选项的数目,超过长度时被折叠起来。
列表框中提供了多个文本选项,可以浏览多项。
Java语言以JList类来创建列表框组件,JList类继承自JComponent类。
列表框组件的使用方式非常简单,先用JList类的add()方法将选项加入到列表框中,然后再利用程序来控制列表框的显示方式。
5.参考答案
每个菜单项的作用与按钮相似,也是在单击时引发一个动作命令,所以整个菜单就是一组层次化组织、管理的命令集合,使用它用户可以方便地向程序发布命令。
它们的层次结构如图2所示。
图2菜单的层次结构
6.参考答案
事件处理的特殊之处在于其操作的启动不是主动地掌握在程序流程中,而是由与程序交互的用户在使用程序时即兴决定的。
相应地,事件处理机制必须具有监听的功能,以便随时监测用户的动作。
要实现监听功能,必须有事先定义好的事件,并规定不同事件由什么事件源产生,有什么监听者处理。
事件源是可能产生事件的图形用户界面组件。
监听者定义了处理事件源所产生的事件的操作,把事件源注册给按事件类型匹配的监听者后,系统在监听到事件源产生的事件后自动调用监听者中定义的操作完成交互过程,这就是Java的事件处理机制。
把事件源注册给监听者,让监听者处理事件,称为委托事件模型。
能够产生事件的就时间源,实现了处理事件的接口的就是监听者。
在Java图形用户界面中,事件源通常是各种控制组件,监听者通常是各种容器相关。
7.参考答案
按钮(JButton)、文本组件(JTextField,JTextArea)、列表(JList)和菜单选项(JMenuItem)都是动作事件源。
响应动作事件需要注册动作事件源,实现actionPerformed()方法。
第10章线程
一、判断题
1.2.√3.4.5.√6.
二、填空题
1.start()
2.110
三、选择题
1.C2.E3.B4.D5.A
第11章网络编程
1.A
.*
3.InetAddress
4.StreamScoketsDatagramSockets
5.UDP是无连接的传输协议
6.DatagramPacketDatagramSocket
7.参考答案
TCP是在端点与端点之间建立持续的连接而进行通信。
建立连接后,发送端将发送的数据加上序列号和错误检验代码,并以字节流的方式发送出去;接收端则对数据进行错误检查并按序列顺序将数据整理好,数据在需要时可以重新发送,因此整个字节流到达接收端时完好无缺。
利用UDP进行数据传输时,需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的端点,然后再将数据报发送出去。
这种传输方式是无序的,也不能确保绝对安全可靠,但它很简单,也具有比较高的效率。
TCP和UDP各有各的用处。
当对所传输的数据具有时序性和可靠性等要求时,应使用TCP;当传输的数据比较简单、对时序等无要求时,UDP能发挥更好的作用,如ping、发送时间数据等。
8.参考答案
对一个指定的URL数据的访问,除了使用URL.openStream()方法实现读操作以外,还可以通过URLConnection类在应用程序与URL之间建立一个连接,通过URLConnection类的对象,对URL所表示的资源进行读、写操作。
要通过URL连接进行数据访问,首先要创建一个表示URL连接的URLConnection类的对象,然后再进行读写数据访问。
URLConnection类提供了很多连接设置和操作的方法,其中重要的方法是获取连接上的输入流方法getlnputStream()和输出流方法getOutputStream()。
9.参考答案:
Socket类和ServerSocket类
10.参考答案:
DatagramSocket类和DatagramPacket类
第12章Java数据库
一、填空题
1.数据2.数据库3.DBMS4.关系模型5.表
6.select7.from8.where
9.Java应用程序JDBC驱动程序管理器驱动程序DBMS
10.JDBC-ODBC桥加ODBC驱动程序本地API、部分是Java的驱动程序
JDBC-Net的纯Java驱动程序本地协议的纯Java驱动程序
11.java.sqljavax.sql
12.class.forNameDriver
13.DriverManager
14.PreparedStatementStatement
15.ResultSet
二、选择题
1.B2.B3.A4.D5.D6.C7.C8.A9.B10.C
11.A12.C13.B14.C
三、简答题
1.参考答案
数据就是描述事物的符号记录。
描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表现形式,都可以经过数字化后存入计算机。
所谓数据库是指长期储存在计算机内的、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可以为各种用户共享。
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据管理员和用户组成。
数据库管理系统是数据库系统的一个重要组成部分。
它是位于用户与操作系统之间的一层数据管理软件。
2.参考答案
在程序中使用Class.forName()方法动态装载并注册Driver。
如Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”,通过DriverManager.getConnection()与数据库建立连接。
3.参考答案
JDBC主要提供两个层次的接口,分别是面向程序开发人员的JDBCAPI(JDBC应用程序接口)和面向系统底层的JDBCDriveAPI(JDBC驱动程序接口),它们的功能如图3所示。
图3JDBC应用接口
4.参考答案
PreparedStatement实例包含已编译的SQL语句。
这就是使语句“准备好”。
包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参数。
IN参数的值在SQL语句创建时未被指定。
相反的,该语句为每个IN参数保留一个问号(“?
”)作为占位符。
每个问号的值必须在该语句执行之前,通过适当的setXXX方法来提供。
由于PreparedStatement对象已预编译过,所以其执行速度要快于Statement对象。
因此,多次执行的SQL语句经常创建为PreparedStatement对象,以提高效率。
作为Statement的子类,PreparedStatement继承了Statement的所有功能。
另外它还添加了一整套方法,用于设置发送给数据库以取代IN参数占位符的值。
同时,三种方法execute、executeQuery和executeUpdate已被更改以使之不再需要参数。
这些方法的Statement形式(接受SQL语句参数的形式)不应该用于PreparedStatement对象。
5.参考答案
使用JDBC操作数据库,一般要经过如下步骤:
(1)加载驱动程序Class.forName(driver);
(2)建立连接Connectioncon=DriverManager.getConnection(url);
(3)创建语句对象Statementstmt=con.createStatement();
(4)执行查询语句ResultSetrs=stmt.executeQuery(sql);
(5)查询结果处理及关闭结果集对象rs.close();
(6)关闭语句对象stmt.close();
(7)关闭连接con.close();
第13章J2ME应用程序开发
一、填空题
1.CLDCCDC
2.编译预审核、打包
3.pause、active和destroyed
4.WTK和Eclipse+EclipseMe
5.文字类游戏和图形类游戏
6.importjavax.microedition.lcdui.game;
7.Canvas类
8.Layer、LayerManager、Sprite和TiledLayer。
二、选择题
1.C2.B3.D4.D5.D6.D7.D8.B9.B10.D
11.A12.A13.D14.B15.C16.C17.B18.C19.B20.C
三、简答题
1.参考答案
J2ME在设备原有的操作系统上建造了3层软件层次来实现这种要求,它们是Java虚拟机、配置层(CLDC或CDC)、简表(MIDP)。
图4是J2ME体系结构的框图。
图4J2ME体系结构框图图5MIDlet状态图
2.参考答案
MIDlet共有三个状态,分别是pause、active和destroyed。
图5说明了MIDlet状态改变情况。
3.参考答案
完整的MIDP手机程序开发流程如表1所示(其中混淆为可选)。
表1完整的MIDP手机程序开发流程
流程
工具
输入
输出
编译
javac.exe编译
源文件(*.java)
未混淆的类文件(*.class)
混淆
第三方提供的工具
未混淆的类文件(*.class)
混淆后的类文件(*.class)
预审
preverify.exe预审核
混淆后的类文件(*.class)
经过预先审核的类文件(*.class)
包
jar.exe打包
经过预先审核的类文件(*.class)
包文件(*.jar)
编写描述文件
文本编辑工具
描述文件(*.jad)
安装运行
传输工具(IR/BT/数据线/OTA)
包文件(*.jar)和描述文件(*.jad)
在仿真器或手机上正式运行
4.参考答案
游戏API使用了MIDP的低级图形类接口(Graphics,Image,等等)。
整个game包仅有5个Class:
(1)GameCanvas:
这个类是LCDUI的Canvas类的子类,为游戏提供了基本的“屏幕”功能。
除了从Canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步图像输出;这些功能简化了游戏开发并提高了性能。
(2)Layer:
Layer类代表游戏中的一个可视化元素,例如Sprite或TiledLayer是它的子类;这个抽象类搭好了层(Layer)的基本框架并提供了一些基本的属性,如位置,大小,可视与否。
出于优化的考虑,不允许直接产生Layer的子类(不能包外继承)。
(3)LayerManager:
对于有着许多Layer的游戏而言,LayerManager通过实现分层次的自动渲染,从而简化了游戏开发。
它允许开发者设置一个可视窗口(ViewWindow),表示用户在游戏中可见的窗口;LayerManager自动渲染游戏中的Layer,从而实现期望的视图效果。
(4)Sprite:
Sprite又称“精灵”,也是一种Layer,可以显示一帧或多帧的连续图像。
但所有的帧都是相同大小的,并且由一个Image对象提供。
Sprite通过循环显示每一帧,可以实现任意顺序的动画;Sprite类还提供了许多变换(翻转和旋转)模式和碰撞检测方法,能大大简化游戏逻辑的实现。
(5)TiledLayer:
TiledLayer又称“砖块”,这个类允许开发者在不必使用非常大的Image对象的情况下创建一个大的图像内容。
TiledLayer有许多单元格构成,每个单元格能显示由一个单一Image对象提供的一组贴图中的某一个贴图。