![Java语言程序设计(自考) 习题及解答_第1页](http://file4.renrendoc.com/view9/M00/38/2D/wKhkGWdRBPaAVoABAAKXqdasdr8075.jpg)
![Java语言程序设计(自考) 习题及解答_第2页](http://file4.renrendoc.com/view9/M00/38/2D/wKhkGWdRBPaAVoABAAKXqdasdr80752.jpg)
![Java语言程序设计(自考) 习题及解答_第3页](http://file4.renrendoc.com/view9/M00/38/2D/wKhkGWdRBPaAVoABAAKXqdasdr80753.jpg)
![Java语言程序设计(自考) 习题及解答_第4页](http://file4.renrendoc.com/view9/M00/38/2D/wKhkGWdRBPaAVoABAAKXqdasdr80754.jpg)
![Java语言程序设计(自考) 习题及解答_第5页](http://file4.renrendoc.com/view9/M00/38/2D/wKhkGWdRBPaAVoABAAKXqdasdr80755.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Java概述
一、单项选择题
1.若Java程序中公有类的名字是OneApp,则保存该程序的文件名是【】
A.Oncapp.javaB.Oncapp.classC.OncApp.javaD.OncApp.class
答案:Co
保存Java源程序的文件名要与公有类的名字一致,包括大小写也要完全相同,且文件名的
后缀是.java。一个源程序文件中最多只能有一个公有类c
2.Java程序OneApp.java编译后的类文件名是【】
A.Oncapp.javaB.Oncapp.classC.OneApp.javaD.OneApp.class
答案:Do
Java源程序经编译后,生成的类文件的名字与原来的名字相同,后缀是.class。
3.Java语言的解释器是【】
A.JVMB.javac.exeC.java.exeD.JDK
答案:Co
Java语言的编译器是javac.cxc,解释器是java.cxc。JVM是Java虚拟机,JDK是软件开发
工具包。
4.下列选项中,不属于Java语言特点的是【】
A.类型定义B.解释执行C.与平台无关D.多线程
答案:A。
C语言中使用typedef进行类型定义,在Java中已经去掉了。另外三个选项都是Java的特
点。
5.下列关于Java程序的叙述中,正确的是【】
A.Java程序必须配合HTML文件才能执行
B.JVM解释执行Java源程序
C.Java程序中可以使用指针
D.Java程序生成的字节码文件与平台无关
答案:Do
Java程序在经过编译且正确后,可以使用Java命令直接执行,配合HTML文件才能执行的
是Applet。解释执行的不是Java源程序,是源程序经编译后生成的字节码文件。Java中已
经没有指针这个语法成分了。
6.下列选项中,不是Java程序主函数main。前面的修饰符的是【】
A.classB.staticC.voidD.public
答案:Ao
main。函数前面的修饰符通常是:publicstaticvoid,不包括class。class关键字用在类定义的
第一行中,即类头中。main。不是类,是类中的函数。main。前三个修饰符的次序可梢做变
化,参见教材第一章第三节中的内容。
7.下列概念中,属于面向对象语言重要概念和机制之一的是【】
A.方法调用B.模块C.继承D.结构化
答案:Co
方法调用、模块、结构化都不仅仅是面向对象语言中的概念,在面向过程的语言中也有这
些概念,并且它们并不体现面向对•象的特点。而继承概念在面向过程的语言中是没有的,
这是面向对象语言的特点。
二、填空题
1.假设Java程序保存在文件MyTest.java中,则编译这个程序的命令是。
答案:javacMyTest.javao
javac是Java的编译器,javac的后面是要编译的源文件名,而且是带后缀名的全名。
2.类TesW经Java编译程序编译后,产生的文件是。
答案:字节码文件Testll.dass。
源文件中的每个类编译后都生成一个类文件。文件名是类名,后缀是.class。
3.JVM的全称是o
答案:Java虚拟机,英文是JavaVirtualMachine。
4.Java程序主函数main。前面的修饰符是_____。
答案:publicstaticvoido
这三个关键字的次序可以略有不同。
5.Java源文件经编译后生成的二进制文件称为o
答案:字节码文件。
字节码文件是类文件。参见教材第一章第一节中的内容。
6.编写好的Java源程序在计算机上运行需依次经历两人阶段,分别是和解弹执
行。
答案:编译。
参见教材第一章第三节中的内容。
7.公有类MyFirstTest所在的文件经Java编译程序编译后,产生的文件是。
答案:MyFirstTest.classo
三、简答题
1.请简要叙述Java语言的特点。
解答:Java是通用的、面向对象的语言,并具有分布性、安全性和健壮性等特点。具
体表现在以下方面。
(1)语法简单,功能强大
Java语言的语法非常像C++,同时去掉了C++中不常用且容易出错的地方,Java解释
器只占用很少的内存,适合在各种类型的机器上运行。
(2)与平台无关
Java语言一个非常重要的特点就是与平台的无关性,Java虚拟机(JavaVirtualMachine,
简称JVM)是实现这一特点的关键。
Java编译器将Java程序编译成虚拟机能够识别的字节码(bytecode)。字节码就是虚拟
机的机器指令,它与平台无关,有统一的格式,不依赖于具体的硬件环境,只运行在JVM
上。在任何安装Java运行时环境的系统上,都可以执行这些代码。JVM在执行字节只文件
时,把字节码解释成具体平台上的机器指令执行。所以Java程序在不同的平台上运行时,
不需要重新编译。
Java语言规定了统一的数据类型,有严格的语法定义,在任何平台上,同一种数据类型
是•致的,为Java程序跨平台的无缝移植提供了很大的便利。
(3)解释编译两种运行方式
Java程序可以经编译器得到字节码。在现在的Java版本中又加入了编译功能(即just
intime编译器,简称JIT编译器),JIT编译器将字节码转换成本机的机器代码,然后可以
以较高速度执行,使得执行效率大幅度提而。
(4)多线程
Java内置了语言级多线程功能,提供现成的类Thread,只要继承这个类就可以编写多
线程的程序,可使用户程序并行执行。
(5)动态执行兼有丰富的API文档及类库
Java执行代码是在运行时动态载入的,程序可以自动进行版本升级。在网络环境下,可
用于瘦客户机架构,减少维护工作。Java为用户提供了详尽的API文档说明,Java开发工
具包中的类库包罗万象,类库与时俱进,随时更新,增加的新方法和其他实例,不会影响到
原有程序的执行。
2.为什么说Java语言是平台无关的?
解答:一般的高级语言程序在不同的平台上运行时,需要针对本计算机机器指令集而编
译成不同的目标文件。而JVM屏蔽了具体平台的差异。Java编译器将Java程序编译成虚拟
机能够识别的字节码(bytecode)。字节码就是虚拟机的机器指令,它与平台无关,有统一的
格式,不依赖于具体的硬件环境,只运行在JVM上。在任何安装Java运行时环境的系统上,
都可以执行这些代码。JVM在执行字节码文件时,把字节码解释成具体平台上的机器指令
执行。所以Java程序在不同的平台上运行时,不需要重新编译。
Java语言规定了统一的数据类型,有严格的语法定义,在任何平台上,同一种数据类型
是一致的,为Java程序跨平台的无缝移植提供了很大的便利。
3.什么是Java虚拟机?
解答:Java虚拟机(JavaVirtualMachine,简称JVM)是,台虚拟计算机,是通过在实
际的计算机上仿真模拟各种计算机功能来实现的。不同的操作系统有不同的虚拟机,它类似
于一个小巧而高效的CPU,是实现Java语言平台无关性的保证。
【延伸阅读】Java虚拟机规范中给出了JVM的定义:JVM是在一台直正的机器卜用软
件方式实现的一台假想机。JVM使用的代码存储在.class文件中。JVM的某些指令很像真正
的CPU指令,包括算术运算、流控制和数组元素访问等。
JVM的具体实现包括:指令集(等价于CPU的指令集)、寄存器组、类文件格式、栈、
垃圾收集堆、内存区。
Java虚拟机规范提供了编译所有Java代码的硬件平台。因为编译是针对假想机的,所
以该规范能让Java程序独立于平台。它适用于每个具体的硬件平台,以保证能运行为JVM
编译的代码。JVM不但可以用软件实现,而且可以用硬件实现。
JVM的代码格式为压缩的字节码,因而效率较面。由JVM字节码表示的程序必须保持
原来的类型规定“Java主要的类型检查是在编译时由字节码校睑器完成的°Java的任何解释
器必须能执行符合JVM定义的类文件格式的任何类文件。
Java虚拟机规范对运行时数据区域的划分及字节内的优化并不做严格的限制,它们的
实现依平台的不同而有所不同。JVM的实现叫做Java运行时系统或运行时环境(Runlime
Environment),简称为运行时。Java运行时必须遵从Java虚拟机规范,这样,Java编译器生
成的类文件才可被所有Java运行时系统下载。嵌入了Java运行时系统的应用程序,就可以
执行Java程序了。目前有许多操作系统和浏览器都嵌入了Java运行时环境。
4.查阅API文档,列出JavaAPI文档中4个包名。
解答:从JavaAPI文档中选出了4个比较常用的包:java.awt'java.lang^java.utik
javax.swingo编程时会用到这4个包,后续章节中也会提及。
5.查阅API文档,列出java.lang中4个类。
解答:从java.lang包中选出了常用的4个类:Math、String、SystemThread<>编程时
会用到这4个类,后续章节中也会提及。
6.查阅API文档,列出java.awt.event中4个接口。
解答:java.awt.evenl是处理事件的包,选出4个常月接口:IiemLislener、KeyListener>
MouseListenersMouseListenero讲授事件一节时会提及。
7.查阅API文档,列出java.lang.Malh类中4个常用方法。
解答:java.lang.Math类中包含了许多常用函数,选出4个常用方法如下。
staticintabs(inta):返回int型值a的绝对值。
staticdoublemax(doublea,doubleb):返回两个double型值a、b中的较大者。
staticdoublepow(doublea,doubleb):返回a的b次塞的值。
staticdoublerandom():返回大于等于0.0且小于1.0的一个正的double型值。
8.查阅API文档,列出javaJang.String类中4个常用方法°
解答:java.lang.SEng是处理字符串的类,选出4个常用方法如下。
charcharAt(intindex):返回由index指定的索引处的字符。
Stringconcat(Stringstr):将指定字符串str添加在本串的最后。
booleanequals(ObjectanObject):将本串与指定对象anObject进行比较。
intindexOf(Stringstr):返回指定子串sir在本串中第一次出现的索引。
9.查阅API文档,列出java.util.Random类中2个常用方法英
解答:javauiLRandom类是用来生成伪随机数的类。选出2个常用方法如下。
doublenextDouble():根据本随机数生成器,从0.0到1.0之间、均匀分布的double型伪
随机数序列中,返回下一个伪随机数。
intnextlnt(intbound):根据本随机数生成器,从0(含)到指定值bound(不含)之间、
均匀分布的int型伪随机数序列中,返回一个伪随机数。
10.查阅API文档,列出java.awt.Color类中2个构造方法。
解答:java.awt.Color是用来处理颜色的类。选出2个常用方法如下。
Color(floatr,floatg,floatb):使用指定的范围在(0.0-1.0)间的红色、绿色和蓝色值r,g,b,
创建一个不透明的sRGB颜色。
Color(intr,inig,intb):使用指定的范围在(0-255)间的红色、绿色和蓝色值rgb,创
建一个不透明的sRGB颜色。
第二章数据和表达式
一、单项选择题
1.以下选项中,能作为Java语言关键字的字符串的是【】
A.defineB.typeC.includeD.switch
答案:Do
dehne可以进行宏定义,是C语言中预处理命令中的一种,在Java中已经丢弃。C语言中
使用include语句包含.h文件,Java中使用的是import语句。switch用在多重分支语包中。
参看教材第三章第二节的内容。
2.以下标识符中,不是Java语言关键字的是【】
A.waitB.newC.longD.switch
答案:Ao
使用new调用类的构造方法来创建对象。long表示长整型类型。switch是多分支语句,其用
法参见教材第三章第三节的内容。
3.以下字符串中,能作为Java程序中的标识符的是【】
A.VaiB.OK#C.2ValD.catch
答案:A。
OK#中含有特殊字符#。2Val是以数字2开头。catch是关键字。它们都不能用作标识符。
4.以下字符串中,能作为Java程序变量名的是【】
A.defaultB.finalC.longD.CASE
答案:Do
变量名必须是一个合法的标识符,CASE是全大写的,全小写的case是关键字,两者是不
相同的。default用在多重分支语句中,final用在异常处理语句中。long表示长整型类型。
5.下列选项中,能作为Java语言注释的是【】
A.从/*开始直到行尾B.从〃开始直到行尾
C.从/*开始直到**结束D.从/**开始直到行尾
答案:Bo
Java程序中的注释,如果是以/*开头的,则必须以*/结尾。所以选项A不正确,它没有结束
标记。类似的,选项D也是没有结束标记*/。选项C的结束标记符号不正确。
6.标识符MAIN不能用作【】
A.类名B.接口名C.程序名D.主函数名
答案:De
Java程序中,主函数名必须是main,且全小写。MAIN是正确的标识符,可以用作类名、
接口名及程序名。
7.不属于Java基本数据类型的是【】
A.记录型B.整型C.浮点型D.布尔型
答案:Ao
记录型是C语言中由程序员通过typedef定义的,Java语言中除了整型、浮点型、布尔型等
基本数据类型外,程序员仅能定义类类型(由class标识)和接口(由interface标识)。
8.以下数据类型转换中,必须进行强制类型转换的是【】
A.int-*charB.short-*longC.float—doubleD.byte-*int
答案:Ao
ini比char的位数多,所以不能进行自动类型转换,必须进行强制类型梏换。选项B、C和
D都是由位数少的类型转换为位数多的类型,可以自动完成。
9.以下数据类型转换中,必须进行强制类型转换的是【】
A.long-*byteB.short-*floatC.inl-*longD.by(e-*short
答案:Ao
10.以下选项中,不是转义字符的是【】
A.\u06lB.\tC.\14lD.\u0061
答案:Ao
选项B是水平制表符,选项C和D表示的都是字符a。'后面是3位八进制数。’\if后面必
须是4位十六进制数。
二、填空题
1.用来声明Java布尔变量(逻辑变量)的保留字是。
答案:boolean(>
2.方法内定义的变量称作。
答案:自动变量,或是局部变量/临时变量/栈变量。
自动变量需要由程序员为其初始化。
3.Java逻辑与和逻辑或运算符有一个特殊的功能,当左侧操作数能决定表达式的值时,跳
过右侧操作数的运算。这个功能是o
答案:短路操作。
4.一个byte类型的操作数和一个int类型的操作数进行运算,结果的类型是。
答案:int。
不同类型的量进行混合运算时,要先转换为同一种类型,然后再进行运算。通常是位数少
的类型转换为位数多的类型,byle类型的操作数要先转换为ini类型的,进行运算后的类型
也为int类型的。
5.当不同数值类型的数据进行运算时,表示范围较小的类型转换为表示范围较大的类型的
转换称作。
答案:自动类型转换。
对「整数类型,位数少则表示范围较小,位数多则表示范围较大。对于•浮点数类型也是如
此。而int型是32位,long型是64位,相应地,float是32位,double是64位。它们之
间,整数的表示范围小于浮点数的表示范围。整型转为浮点型也是自动进行的。
6.当不同数值类型的数据进行运算时,表示范围较大的类型转换为表示范围较小的类型的
转换称作O
答案:强制类型转换。
不符合自动类型转换规则的数据进行混合运算时,如果需要进行类型转换,必须标注目标类
型,进行强制类型转换。
7.表达式“45&20”的十进制值是o
答案:4o
45的二进制表示为101101,20的二进制表示为10100,两个数进行位与运算,即对应位进
行与运算,两个位都为1时结果为1,其余为0。101101&10100=000100,即是4c
8.表达式1==1»>32;的值是0
答案:true。
移位运算符>»的优先级高于比较运算符==,所以先计算1»>32。对于ini型量,移位操
作的位数对32取模,即1>>>32不移位,结果仍是I。这个结果再与1进行比较,相等,
所以结果是true。
三、简答题
1.Java支持的数据类型有哪些?列出Java语言中所有的基本数据类型。
解答:Java支持的数据类型分为两大类,一类是基本数据类型,另一类是复合数据类
型。基本数据类型共有8种,分为4小类,分别是逻辑型、字符型、整型和浮点型。复合
数据类型包括数组、类和接口。
逻辑类型或称布尔类里使用boolean表示,字符类型使用char表示,整数类型共有4
种,分别是:byte(1字节)、short(2字节)、ini(4字节)及1011g(8字节)。浮点数共有
两种类型,分别是:单精度浮点数float(4字节)及双精度浮点数double(8字节)。
【延伸阅读】Java中定义的各种数据类型占用固定的内存长度,与当前系统的软硬件
环境无关。例如,int型整数总是32位的,而不管是在Linux、Windows还是Android环境
下。这个特点体现了Java的平台无关性。另外Java还为每种数据类型都预定义了一个默
认值,以保证在任何情况下对变量的取值都是正确的。这个特点体现了Java的安全稳定
性。一个char表示一个Unicode字符。每一个Unicode字符可用\uxxxx,表示,其中xxxx
是任意的一个16位无符号整数,即4位卜六进制数,范围为。〜65535。char类型的常量
值必须用一对单引号(‘‘)括起来。例如,B的Unicode值为\u0042、
byle表示的数的范围为-128〜127,short表示的数的范围为-32768〜32767,ini表示的
数的范围为-231〜23」,long表示的数的范围为・263〜26」。
整型常量可用十进制、八进制或十六进制形式表示,以I〜9开头的数为十进制数,以
0开头的数为八进制数,以Ox开头的数为十六进制数。Java中4种整型量都足有符号为。
float表示的数的范围约为1.4e,45〜3.4C+38,double表示的数的范围约为4.9e'324^
l.8e+308o
2.Java中常用的运算符有哪几类?每类列出几个,并说明其含义。
解答:运算符有算术运算符、关系运算符、逻辑运算符、位运算符,每类列出3个。
此外还有几个特殊的运算符。如表2-1所示。
表2-1部分运算符及其含义
类别运算符运算符含义
+加法
算术运算符减法
++加1
<小于
关系运算符>=大于等于
==等于
&&逻辑与
逻辑运算符II逻辑或
J逻辑非
&位与
位运算符A位异或
«左移
new对象实例
+=字符串连接赋值
特殊运算符
?:条件运算符
1=或赋值
3.Java中运算符优先级是如何定义的?举例说明。
解答:Java语言将全部运算符按从高到低划分了15个等级,每个等级中包含少见一个
多则十余个的运算符。比如,数组下标运算符,后缀形式的加1和减1运算符具有最高优先
级,扩展赋值运算符具有最低优先级,乘法、除法运算符的优先级高于加法、减法运算符的
优先级等。
在对一个表达式进行计算时,如果表达式中含有多人运算符,则要按运算符的优先顺序
从高向低依次进行,同级运算符则根据结合律从左向右或从右向左进行°括号可以改变运算
次序。各运算符的优先次序见教材的表2-8。
4.从下列字符串中选出正确的Java关键字:
abstract,bit,boolean,case,character,comment,double,else,end,endif,extend,false,final,
finally,float,for,generic,goto,if,implements,import,inner,instanceof,interface,line,long,
loop,native,new,null,old,oper,outer,package,print,private,rest,return,short,static,super,
switch,synchronized,this,throw,throws,transient,var,void,volatile,where,write
解答:Java关键字包括:abstract,boolean,case,double,else,false,final,finally,float,
for,generic,goto,if,implements,import,inner,instanceof,interface,long,native,new,null,
outer,package,private,rest,return,short,static,super,switch,synchronized,this,throw,
throws,transient,void,volatile(>
其余的都不是Java关键字:bit,character,comment,end,endif,extend,line,loop,old,
oper,print,var,where,writer
5.请叙述标识符的定义规则。指出下面给出的字符串中,哪些不能用作标识符,并说明原
因:
here,(here,this,(hat,it,2tol,标识符,字符串,名字
解答:在Java中,定义标识符的规则主要有:
(1)标识符是以字母、下划线(_)或美元符($)开头,由字母、数字、下划线
(_)或美元符($)组成的字符串。仅能含有这些字符。
(2)标识符区分大小写。
(3)标识符的氏度没有限制。
(4)注释和空白不能插在一个标识符之中。
(5)Java有许多关键字,它们都有各自的特殊意义和用法,不得用它们作为标识符。
题目所给的标识符中,不正确的有this和2tol,其中this是Java中的关键字,不能用
作标识符,2tol是以数字开头的字符串,也不符合Java对标识符的规定。其他的都是正确
的标识符。汉字亦是字母。
6.转义字符是什么?列举几个转义字符。
解答:有些字符在语言中有特殊的含义,表示它们时应使用转义字符。转义字符就是
使用特殊格式表示的有特殊含义的字符。表2-2中列出了几个转义字符。
表2-2几个转义字符及其含义
转义字符含义
\b退格键(Backspace)
\n换行符
\r回车符
\t水平制表符(Tab)
\\反斜杠\
\,单引号’
\"双引号"
7.Java中的类型转换是指什么?
解答:每个数据都与特定的类型相关,运算时,允许整型、浮点型、字符型数据进行
混合运算。不同类型的变量数据要先转换为同一种类型,然后再进行运算。Java是一种强
类型语言,不支持变量数据间的自动任意转换,有时必须显式地进行变量类型的转换。
如果同为整数类型,或同为浮点数类型,那么,转换的原则是位数少的类型可以转换
为位数多的类型。对于不同类的数值类型,转换的原则是整数类型可以转换为浮点数类
型。有一个特例是字符类型,它可以转换为位数更长的熟数类型或浮点数类型。上述这几
种转换称作自动类型转换,也就是表达式中不需要显式地指明相关的类型信息。凡是不符
合自动类型转换规则的类型转换,都必须标注出目标类型的名字,这属于强制类型转换。
8.>>>与>>有什么区别?举例说明。
解答:Java提供两种右移运算符。逻辑右移运算符(也称无符号右移运算符):>>>只对
位进行操作,而没有算术含义,它用0填充移位后左侧的空位。运算符“>>”执行算术右
移,它使用最高位填充移位后左侧的空位。右移的结果为:每移一位,第一个操作数被2整
除一次,移动的次数由第二个操作数确定。比如,-256»4得到-16,-256>»4得到268435440,
0xa2»>2得至IJ40。
9.下列表达式中,找出每个操作符的计算顺序,在操作符下按次序标上相应的数字。
a+b+c-d
a+b/c-d
a+b/c*d
(a+b)+c-d
(a+b)+(c-d)%e
(a+b)+c-d%e
(a+b)%e%c-d
解答:在Java中,在对一个表达式进行计算时,如果表达式中含有多个运算符,则要
按运算符的优先顺序从高向低依次进行,同级运算符则按结合律进行。括号可以改变运算
次序。
各表达式中运算符的计算顺序如下所示。
a+b+c-d
123
a+b/c-d
213
a+b/c*d
312
(a+b)+c-d
123
(a+b)+(c-d)%e
I423
(a+b)+c-d%e
1243
(a+b)%e%c-d
1234
10.什么是变量声明?
解答:Java中,通过在对象类型后紧跟一个变量名来对变量进行声明。例如;int
num。变量声明也叫变量说明。
【延伸阅读】根据变量是基本数据类型还是复合数据类型,其声明的效果也分两种结
果。对于简单类型的变量,声明即为创建,也就是在内存中分配了适当的存储空间。完成
初始化后可以直接使用。而对于复合数据类型变量,声明只是定义了对所声明变量的•个
引用,这个引用还没有指向任何可用的存储单元,还需要通过new运算符来实例化该对
象,也就是分配内存,并让引用指向这个存储区的首地址。
四、程序分析题
阅读下列程序片段,请写出程序片段的执行结果。
intbl=1;
intb2=I;
bl«=31;
b2«=31;
bl»=31;
bl»=1;
b2»>=31;
b2»>=1;
解答:>>>与>>都是右移运算符,它们的不同之处在于使用不同位填充移位后左侧的
空白。>>运算使用符号位填充左侧的空位,而>>>使用零填充空位。也就是说,>>运算保
持操作数的符号不变,而>>>运算则可能改变原数的符号。
分析上面的程序段。仞始时,bl和b2都是ini型的变量,占32位,初值均为1,两
个变量分别向左移动31位,两个值变为:100000000000000000000000(X)000000,在计算
机内部,这个值是:-2147483648V
下一步,bl再向右移动31位,这里使用的是>>运算符。bl是一个负数,其最高位为
1,右移时使用1填充左侧的空位。右移31位后bl的值为:111111111111111111111111
lllllllh在计算机内部,这个值是:-1。bl继续向右移动1位,此时值不变,仍为-1。
实际上,此后使用>>运算符将bl向右移动任何位,它的值都不会再变了。
使用>>>运算符则有所不同。>>>使用零填充左侧的空位,所以将b2向右移动31位
后,它的值为:0000000000000000(X)00000000000001,即b2的值为1。再向右移动I
位,则它的值为:000000000000000000(X)000000000000,即b2的值为0。
第三章流程控制语句
一、单项选择题
1.以下选项中,不属于Java语句的是【】
A.for语句B.switch语句C.while语句D.include语句
答案:Do
include语句是C语言中用来包含头文件的语句。Java语言中引入包的语句是import语句。
2.以下选项中,不属于Java语句的是【】
A.break语句B.continue语句C.goto语句D.for语句
答案:Co
goto语句使得程序的执行流程混乱,程序的易读性降低,Java语言中已经不再使用该语句。
3.设i的初值为6,则执行完户二;后,i和j的值分别为【】
A.6,6B.6,5C.5,6D.5,5
答案:Co
给j赋值时,使用的是i原来的值,即6。赋值后,i的值减1,为5。
4.在一个if语句中,下列选项中正确的是【】
A.if的个数一定多于else的个数B.if的个数一定与else的个数相等
C.if的个数一定少于else的个数D.if的个数可能多于else的个数
答案:Do
if语句是允许嵌套的,而且else语句是可选的。当在一个if语句中又嵌套了if语句时,就
会出现多个if的情况。而因为else是可选的,所以它的个数少于等于if的个数。
5.switch语句中,大多数情况下,每个case块中最后一条语句应该是【】
A.defaultB.continueC.breakD.goto
答案:Co
按照switch语句的语法格式,每个case块中最后一条语句是break语句。表示针对这种情
形的处理已经完成,程序的控制流转至switch之后的语句继续执行。
6.switch语句中,可以不写break语句的case块是【】
A.第一个块B.最后一个块C.任意一个块D.哪个块都不行
答案:Bo
实际上,从语法角度看,哪个case块都可以不写break语句,但这可能不是原本想要的语
义。没有break语句,控制流会一直执行下去,起不到多分支的作用。通常,每个case块
都要写break语句,保证执行了该块中的语句后控制流转到switch语句之后继续执行。如
果进入最后一个case块执行,则写不写break语句,控制流都转到switch语句之后,所以
这个break语句是可以省略的。
7.switch语句中,如果没有相匹配的条件,则执行【】
A.任一个case后的语句B.defauh之后的语句
C.所有case后的语句D.循环执行switch语句
答案:Bo
switch语句中,如果没能进入任何一个case块执行,则进入default块中,执行其中的语
句。可以将default块看作是一个分支,即前面的条件均不满足时要执行的语句。
8.下列选项中,不是受检异常的是【】
A.ClassNotFoundExceptionB.ArithnieticException
C.FilcNotFoundExccptionD.lOExccption
答案:Be
ArithmcticExccption异常属于运行时异常。
9.下列选项中,与try语句配套使用的语句是【】
A.defaultB.catchC.breakD.case
答案:B.,
try-catch语句是异常处理语句,用try语句括住可能会出现异常的语句,后面使用catch语
句捕获异常并进行处理。
10.处理异常时,catch语句的后面,一般都会出现的语句是【】
A.defaultB.catchC.breakD.finally
答案:
catch语句的最后通常是finally语句。不论是否捕获到异常,都要执行finally后面的语
句口
11.假设有定义:Strings=null,则下列选项中,能引发异常的是【】
I.if((s!=null)&(s.iength()>0))
II.if((s!=null)&&(s.length()>0))
III.if((s==null)|(s.length()==0))
IV.if((s==null)||(s.length()==0))
A.IB.I和HIC.II和IVD.Ill
答案:Bo
I和HI中,使用的分别是&和运算符,这是位运算符,没有短路功能,所以&或|运算符的
前后子表达式都要执行。如果s是空串,则调用s.length()时会发生异常。H和IV中,使用
的是逻辑运算符&&和II,具有短路功能。对于具有短路功能的运算符,如果运算符前面的
子表达式能决定整个表达式的结果,则可以跳过运算符后面的子表达式的计算。H中,当
s是空串时,s!=null的值为false,不必去执行s』ength()>0。当s不是空串时,调用
shngth。是安全的。IV中,当s不是空串时,调用s.length()==O是安全的。当s是空串
时,s==null为true,已经能够决定整个表达式的结果为true,不用去计算s』cngth(),所以
也是安全的。
二、填空题
1.能替换for语句的语句是或。
答案:do-whilcwhilco
for语句、do-while语句和while语句都是循环语句,且可以互相替换。
2.能替换if语句的语句是o
答案:switch语句。
if语句与switch语句都是分支语句,switch语句中的表达式与if语句中的条件表达式不完
全相同,switch中表达式的计算结果必须是int类型或char类型的,而if语句中是条件表
达式,计算结果是逻辑值。
3.switch语句中,表示条件的表达式只能是类型或类型。
答案:intchar。
4.while语句中while后面的条件必须是类型的。
答案:逻辑/布尔。
while语句中,while后面是条件表达式,计算结果是逻辑:型的,或称布尔型的。
5.流控制语句有3类,对应于顺序流的语句是。
答案:赋值语句。
流控制分为3类:顺序流、循环流和分支流。对应于顺序流的是赋值语句。
6.循环语句有语句、语句和语句。
答案:forwhiledo-whileo
这3种语句都是循环语句。
7.分支语句有语句和语句。
答案:ifswitch。
这两种语句都是分支语句。
8.如果想使用其他包中的类,则需要在程序的开头使用语句。
答案:引入/import语句。
三、简答题
1.请说明switch语句的执行过程。
解答:switch语句的语法格式是:
switch(表达式)(
casec1:语句组i;break://break语句可选
casec2:语句组2;break;//break语句可选
caseck:语句组k:break;“break语句可选
[default:语句组;break;//break语句可选
1
switch语句的执行过程是:计算表达式的值,用该值依次和cl、c2、…、ck相比较。如
果该值等于其中之一,例如ci,那么执行caseci之后的语句组i,直到遇到break语句跳到
switch之后的语句。如果没有相匹配的ci,则执行default之后的语句。
2.程序3.1中如果某个treak语句不写,则程序执行时的输出是什么?举例说明。
解答:如果某个break语句不写,则当前执行的ease块执行完毕,会继续执行下一个
case块内的语句,直到遇到break语句时结束。
举例来说,在程序3.1中,如果第一组case对应的语句块内不写break语句,即不写第
一个break语句,则当输入命令行第一个参数的首字符是数字时,比如输入“234”,那么输
出内容是:Thefirstcharacterisdigit2及Thefirstcharacterislowercaseletter2。当然,后一
条输出是不应该出现的。
3.请说明嵌套的if语句中,else语句的对应规则。
解答:Java规定else子句属于逻辑上离它最近的if语句,也就是同一块中还没有匹配
else的最近的if。
4.请简要说明while语句与do-while语句的不同之处。
解答:while语句和do-while语句的语法格式是不同的,while中条件表达式写在前面,
do-while中条件表达式写在后面。
两种语句条件表达式的判断时间也不同。while语句先判断条件表达式的值,然后根据
值的真假决定是否执行循环体。do-while语句先执行循环体,再判断条件表达式的值,以决
定是否再次执行循环体。
两种语句中循环体的执行次数也不同。while中,循环体语句可能一次也不执行,do循
环中的循环体至少执行一•次。
5.请简要说明while语句与for语句的适用情况。
解答:for语句中,可以以执行次数来控制循环体的执行,当明确了次数后,可以选用
for语句。而有时只知道循环体执行的前提条件,但执行次数并不明确,此时可以使用while
语句。
6.什么是异常?解释“抛出”和“捕获”的含义。
解答:Java语言把程序运行中可能遇到的错误分为两类,其中一类是非致命性的,通过
某种修正后程序还能继续执行。这类错误称作异常(Exception)。
生成的异常对象传递给Java运行时系统,运行时系统寻找相应的代码来处理这一异常。
生成异常对象并把它提交给运行时系统的这〜过程称为抛出(throw)一个异常。
Java运行时系统从生成对象的代码块开始进行回溯,沿方法的调用栈逐层回溯,寻找相
应的处理代码,直到找到包含相应异常处理的方法为止,并把异常对象交给该方法处理。这
一过程称为捕获(catch)(>
7.Java是如何处理异常的?
解答:当发生异常时,Java语言提供的异常处理机制,可专门用来处理异常。Java程序
中,使用iry语句括住可能抛出异常的代码段,用catch语句指明要捕获的异常及相应的处
理代码。一般地,当发生异常时,有3种方法可以处理抛出的异常。
(1)可以忽略它,这将导致程序中断,并输出一条信息。
(2)在发生异常的地方处理它。根据异常所属的类,找到对应的catch语句,然后执行
其后的语句序列,完成对异常的处理,恢及程序的执行。
(3)Java运行时系统从生成异常对象的代码块开始,沿方法的调用栈逐层回溯,在调
用层次中更高层的方法中捕获并处理异常。
8.try及catch语句的作用是什么?语法格式如何?
解答:对于可能抛出异常的代码段,要使用try语句括住,用catch语句指明要捕获的
异常及相应的处理代码。回语句与catch语句的语法格式如下:
try{
〃此处为抛出具体异常的代码
}catch(异常类型1e){
〃抛出异常类型I异常时要执行的代码
}catch(异常类型2c){
〃抛出异常类型2异常时要执行的代码
}catch(异常类型ke){
〃抛出异常类型k异常时要执行的代码
}finally!
〃必须执行的代码
I
其中,异常类型1、异常类型2.........异常类型k是产生的异常类型。根据发生异常所属的
类,找到对应的calch语句,然后执行其后的语句序列,完成对异常的处理,恢复程序的
执行。
9.在什么情况下执行try语句中finally后面的代码段?在什么情况下不执行?
解答:在执行iry语句时,不论是否捕获到异常,都要执行finally后面的语句。try后
面大括号({})中的代码称为保护代码。如果在保护代码内执行了System.exitO方法,则
程序将退出,此时不执行finally后面的语句,这是不执行行nally后面语句的唯一一种情
况。
10.你能说出Java中常见的几个异常吗?它们表示什么意思?在什么情况下引起这些异
常?
解答:Java中定义了一些常见异常,这些是系统预定义的,它们的处理由系统自动执
行。常见的几个异常有:
(1)ArithmeticException算术异常
整数除法中,如果除数为0,则发生该类异常。Java虚拟机遇到这样的错误时会自动
中止程序的执行流程,并新建一个ArithmeticException类的对象,即抛出一个算术运算异
常。例如下面的程序将引发ArithmecicException异常。
publicclassTestArithmeticExceplion
{publicstaticvoidinain(Stringargs[|){
inidenominator=0,numerator=20,result=0;
result=numerator/denominator;
//除数为零,将引发ArilhmciicExccption异,常
System.out.println(result);
)
I
(2)NullPointerExceplion空指针异常
如果一个对象还没有实例化,那么访问该对象或调用它的方法时将导致
Nul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政务(含公共服务)服务平台项目建设方案X
- 未来教育领域中如何利用移动支付进行教育资源的优化配置和共享研究
- 环境保护教育推广与实践
- 国庆节团队旅行活动方案
- 环境艺术设计中的视觉体验与审美需求
- 生态环保理念在办公空间的设计实践
- 环保材料在环境艺术设计中的应用前景
- 生活用纸的创新设计与实践案例分享
- 《2 颜色填充和橡皮擦工具》(说课稿)-2023-2024学年五年级下册综合实践活动吉美版
- 2023八年级物理上册 第四章 光现象第5节 光的色散说课稿 (新版)新人教版
- 小肠梗阻的护理
- 非物质文化遗产拓印 课件
- 2024-2025年高中化学 第1章 第3节 第1课时 电离能及其变化规律教案 鲁科版选修3
- 无锡商业职业技术学院双高建设申报书
- 2024年秋新北师大版七年级上册数学教学课件 3.1.1 代数式
- 环境检测实验室分析人员绩效考核方案
- 全过程工程咨询管理服务方案
- YYT 0681.4-2010 无菌医疗器械包装试验方法 第4部分 染色液穿透法测定透气包装的密封泄漏
- 《麻风病防治知识》课件
- 经典诵读演讲稿6篇
- 乡村医生返聘协议书
评论
0/150
提交评论