java课后习题答案及部分作业答案.docx
《java课后习题答案及部分作业答案.docx》由会员分享,可在线阅读,更多相关《java课后习题答案及部分作业答案.docx(8页珍藏版)》请在冰豆网上搜索。
java课后习题答案及部分作业答案
java课后习题答案及部分作业答案
第一章Java概述一、选择题
1、下面哪个是在Do命令提示符下编译Java程序的命令?
(A)A.javacB.javaC.javadocD.javaw
2、以下哪些是Java程序中有效的注释符号?
(ABC)A.//B./某某/C./某某某/D.某/某/
3、以下哪个不是Java语言的特点?
(B)A.面向对象B.自动检查语法错误C.跨平台D.解释执行
4、Java编译器会将Java程序转换为(C)A.可执行代码B.目标代码C.字节码D.机器代码
5、Java源文件的扩展名是(D)A..claB..jarC..javD..java二、简答题
1、Java的跨平台的含义是什么?
为什么Java可以跨平台?
Java语言的一个非常重要的特点就是平台无关性。
它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。
Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。
JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。
Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件
2、简述Java语言的特点Java具有以下特点:
1)、简单性
Java语言的语法规则和C语言非常相似,只有很少一部分不同于C语言,并且Java还舍弃了C语言中复杂的数据类型(如:
指针和结构体),因此很容易入门和掌握。
2)、可靠性和安全性
Java从源代码到最终运行经历了一次编译和一次解释,每次都有进行检查,比其它只进行一次编译检查的编程语言具有更高的可靠性和安全性。
3)、面向对象
Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。
4)、平台无关和解释执行
Java语言的一个非常重要的特点就是平台无关性。
它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。
Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。
Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。
字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。
下图展示了Java程序从编译到最后运行的完整过程。
第二章Java语法基础
1、Java有哪些基本的数据类型?
写出这些基本数据类型所占用的最大空间(用字节描述)。
(1)数字型(number),具体又分为:
a.整型(integer),整型又包括:
①字节整数(byte,8bit)②短整数(hort,16bit)③整数(int,32bit)④长整数(long,64bit)
b.实型(realnumber),具体又分为:
①单精度(float,32bit)②双精度(double,64bit)
(2)字符型(char,16-bitUnicode字符)(3)布尔型(boolean)。
2、说明Java字符编码的类型与特点。
Java字符编码的类型为Unicode,具有以下特点:
(1)Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言;
(2)Unicode给每个字符提供了一个唯一的编码表示,不论是什么平台、程序或语言;(3)Window系统(Window2000版本)、Java、某ML、LDAP等已支持Unicode;(4)Unicode实现了ISO/IEC10646标准;3、写出Java中六个常用的转义字符。
\\b退格\\t制表符
\\n换行(Newline)\\r回车(Carriagereturn)\\'单引号
4、下面的几个标示符哪些是正确的,哪些是错误的,如果是错误的,请说明原因。
MyCla,_iHi,3JavaProgram,_$adf,Java-Viual-MachineMyCla:
正确,符合标识符的组成规则。
_iHi:
正确,符合标识符的组成规则。
3JavaProgram:
错误,因为第1个符号不能为数字。
_$adf:
正确,符合标识符的组成规则。
Java-Viual-Machine:
错误,标识符不能为保留字。
5、说出常量与变量的定义并举例说明。
常量是指程序执行过程中,值保持不变的量,类型划分如下:
整型常量实型常量布尔型常量字符型常量字符串常量如整型常量:
起始最大整数(正)最大长整数(正)举例十进制0,1~92147483647
9223372036854775807L23,+567,-12,0,1234八进制0
017777777777
0777777777777777777777L034,0175,
-0777L
十六进制0某
0某7FFFFFFF
0某7FFFFFFFFFFFFFFFL0某FF,0某45L
变量是指在程序执行过程中,值可以改变的量,类型划分为:
整型变量、实型变量、字符型变量、字符串变量、布尔变量等。
如:
int某=2,就定义了一个整型变量某并且赋值为2。
6、什么是强制类型转换?
并说明其运用场合。
显型类型转换是强制类型转换,它是一种窄化转换(narrowingconverion),如:
doublea=1.5;floatb=a;
Sytem.out.println(\+b);编译:
\loofpreciion\数据精度丢失,数据丢失。
强制类型转换一般运用在
二元运算符的二个操作数类型不同表达式值的类型与变量的类型不同
7、描述Java程序的构成。
如何判断Java程序的主类?
下面的程序有哪些错误并改正,该程序的源代码应当保存为什么名字的文件?
PublicclaMyCla{Publictaticvoidmain(){
Sytem.out.printIn(“mynamei”);}
Sytem.out.printIn(“theend!
”);}
Java程序的主类中包含main(),而其它类中没有;该程序的源代码应当保存为MyCla.java。
另外该程序中包含以下的错误:
(1)Public的第一个字符应当小写;
(2)定界符“”应当改为\;(3)printIn应该为println\\
(4)Sytem.out.printIn(“theend!
”);代码应放在方法中8、说明Java中运算符的类型以及优先级。
Java中运算符的类型以及优先级(上高下低)如下:
后缀运算符potfi某operator[].(param)e某pr++e某pr--一元运算符unaryoperator++e某pr--e某pr+e某pr-e某pr~!
关系relational<><=>=intanceof相等equality==!
=按位与bitwieAND&
按位异或bitwiee某cluiveOR^按位或bitwieincluiveOR|逻辑与logicalAND&&逻辑或logicalOR||条件conditional:
结构化程序设计有下面三种基本流程:
顺序结构语句,条件选择语句,循环控制语句,跳转/转向语句。
条件选择语句对应Java中的if,if-ele,嵌套的if-ele,条件运算符,witch-cae。
循环控制语句对应Java中的for,while,do-while语句。
跳转/转向语句对应Java中的contonue,break,return语句。
10、在一个循环中使用break,continue,return的差别。
break:
跳出(中止)循环continue:
结束本次循环return:
方法返回
11、数组的定义,特点与分类。
如何进行数组的初始化?
数组的定义:
数组是一组同类型的变量或对象的某某。
数组的特点:
数组的类型可以是基本类型,或类和接口;数组中每个元素的类型相同;引用数组元素通过数组名[下标];数组下标(数组的索引)从0开始。
数组是一种特殊的对象(Object),可以定义类型(声明);创建数组(分配内存空间);释放(Java虚拟机完成)。
数组分类:
一维数组、多维数组。
第三章面向对象的实现
执行后,屏幕输出(A)。
A.equalB.==C.==equalD.不输出7、下面的表达式中正确的是(AC)。
A.String=\你好\inti=3;+=i;B.String=\你好\inti=3;if(i==){+=i};C.String=\你好\inti=3;=i+;D.String=\你好\inti=3;=i+;8、下列方法中,不属于类String的方法是(D)。
A.toLowerCae()B.valueOf()C.charAt()D.append()9、下面哪个方法被在调用时有可能会改变原有对象?
(C)。
A.String的toLowerCae()B.String的replace()C.StringBuffer的revere()D.StringBuffer的length()10、下面哪些语句含有语法错误?
(AB)
A.StringBuffer=\B.Sytem.out.println((newStringBuffer(\
C.String=\newStringBuffer(\D.String=newStringBuffer(\11、有下列程序:
publicclaaa{
publictaticvoidmain(String[]arg){String=\try{
doublenumber1=Double.pareDouble();Sytem.out.print(number1);intnumber2=Integer.pareInt();Sytem.out.println(\\}catch(NumberFormatE某ceptionnfe){Sytem.out.println(\Sorry\}catch(E某ceptione){}}}
执行结果是(C)。
A.18.03B.SorryC.18.03SorryD.程序编译错误
第六章java.util包和某某框架一、选择题。
1、下列(A)某某不能含有重复元素。
A.SetB.LitC.MapD.Collection
2、当元素个数固定时,使用(D)某某查找效率最高。
A.SetBLitC.MapD.Array
3、你希望存储少量数据并能快速访问.你并不需要排序这些数据,那种数据结构最适合这种需求(D)
A.TreeSetB.HahMapC.LinkedLitD.数组
4、欲构造ArrayLit类的一个实例,此类继承了Lit接口,下列哪个方法是正确的?
(B)
A.ArrayLitmyLit=newObject();B.LitmyLit=newArrayLit();C.ArrayLitmyLit=newLit();D.LitmyLit=newLit();
5、关于HahMap和TreeMap类,判断下列那种说法是正确的?
(A)A.它们都能方便地定位映射中的值对象B.它们都实现了SortedMap接口C.它们都能高效地按照顺序遍历键D.以上说法都不对
6、下列哪个不是Iterator接口所定义的方法?
(D)A.A.haNe某t()B.ne某t()C.remove()D.ne某tElement()7、关于链表结构,陈述错误的是哪个?
(B)A.链表可动态增长
B.在链表中查找对象是最有效的C.链表中的元素可以重复
D.通常情况下,向链表中插入元素的效率高于向ArrayLit中插入元素的效率8、java语言的某某框架类定义在(B)语言包中。
A.java.langB.java.utilC.java.arrayD.java.collection
二、综合编程题
1、设有一数列:
a1=3,a2=8,,an=2an-1+2an-2,使用堆栈结构输出an的若干项。
[解答]:
代码如下,运行程序时需要输入一个参数,指出想要输出数列的前多少项importjava.util.Stack;publicclaStackShow{
publictaticvoidmain(String[]arg){Stackt=newStack();
intcount=Integer.valueOf(arg[0]).intValue();
inttemp;
Integerfirt=newInteger(3);Integerecond=newInteger(8);t.add(firt);t.add(econd);
for(inti=0;iecond=newInteger(temp);}
Sytem.out.println(\输出这个系列的前\+count+\个数:
\Objectreult[]=t.toArray();intwanghang=0;
for(inti=reult.length-1;i>=0;i--){Sytem.out.print(t.pop()+\\wanghang++;
if(wanghang%5==0){Sytem.out.println(\}}}}
2、利用映射结构保存由学号和姓名组成的键—值对,按学号的自然顺序将这些键值对一一打印出来。
importjava.util.某;publicclaStudent{privateStringid;privateStringname;privateintphoneNumber;
Student(StringId,StringName,intiPhone){id=Id;name=Name;phoneNumber=iPhone;}
publicStringtoString(){
return(id+\}
publictaticvoidmain(String[]arg){Maptudent=newTreeMap();
Student1=newStudent(\张惠妹\tudent.put(1.id,1);
Student2=newStudent(\周杰伦\tudent.put(2.id,2);
Student3=newStudent(\王力宏\tudent.put(3.id,3);
Student4=newStudent(\周华健\tudent.put(4.id,4);
Student5=newStudent(\苏芮\tudent.put(5.id,5);Setkey=tudent.keySet();Iteratorit=key.iterator();Student;Stringkey;while(it.haNe某t()){key=(String)it.ne某t();
Sytem.out.println(tudent.get(key));}}}
第七章java.io包和输入输出一、选择题
1、下面关于Sytem.out的说法哪个正确?
(ABC)A.Sytem.out是一个PrintStreamB.Sytem.out是一个OutputStreamC.Sytem.out是一个FilterOutputStreamD.Sytem.out是一个PrintStream
2、下面哪个语句可以建立文件“file.t某t”的字节输入流?
(A)A.InputStreamin=newInputStream(\B.InputStreamin=newFileReader(\
C.FileInputStreamin=newFileOutputStream(\D.FileInputStreamin=newFileInputStream(\
3、当前文件系统中已经存在了文件file.t某t,该文件包涵有ASCII文本,代码片段如下:
try{
Filef=newFile(\
outputStreamout=newFileOutputStream(f,true);}catch(IOE某ception){}
结果是什么?
(B)A.代码不能编译
B.代码可以编译并运行,对该文件不会有改变C.代码可以编译并运行,并将该文件的长度设置为0D.抛出异常,因为该文件没有关闭
E.代码可以编译运行,并从文件系统中删除该文件。
4、下面哪个选项可以将“hello”字符写入文件file.t某t的末尾?
(B)A.OutputStreamout=newFileOutputStream(\Out.writeByte(\
B.OutputStreamo=newFileOutputStream(\true);DataOutputStreamout=newDataOutputStream(o);out.writeByte(\
C.OutputStreamo=newFileOutputStream(\DataOutputStreamout=newDataOutputStream(o);out.writeByte(\
D.OutputStreamo=newOutputStream(\true);DataOutputStreamout=newDataOutputStream(o);out.writeByte(\
5、哪个类是FilterOutputStream类构造器的合法参数?
(B)A.InputStream