JAVA各章习题及答案.docx
《JAVA各章习题及答案.docx》由会员分享,可在线阅读,更多相关《JAVA各章习题及答案.docx(136页珍藏版)》请在冰豆网上搜索。
JAVA各章习题及答案
面向对象程序设计—Java语言习题答案
第1章
一、选择题
1.下列选项中,不属于Java语言特点的一项是(C)。
(A)分布式(B)安全性
(C)编译执行(D)面向对象
【解析】Java程序采用解释执行的方法。
在系统编译运行Java程序时,Java编译器将Java程序转化为字节码,在运行时,解释器将编译得到的字节码进行解释执行。
2.在Java语言中,(C)是最基本的元素?
(A)方法(B)包
(C)对象(D)接口
【解析】构成Java程序的基本元素类(抽象的对象)。
3.编译一个定义了3个类和10个方法的Java源文件后,会产生(D)个字节码文件?
扩展名是(D)?
(A)13个字节码文件,扩展名为.class(B)1个字节码文件,扩展名为.class
(C)3个字节码文件,扩展名为.java(D)3个字节码文件,扩展名为.class
【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。
4.在创建Applet应用程序时,需要用户考虑问题是(B)。
(A)窗口如何创建(B)绘制的图形在窗口中的位置
(C)程序的框架(D)事件处理
【解析】创建Applet程序时必须继承系统类Applet,而Applet类中已经包含了如何创建窗口以及事件处理等内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。
5.Java语言属于(B)种语言?
(A)面向机器的语言(B)面向对象的语言
(C)面向过程的语言(D)面向操作系统的语言
【解析】Java语言是一种纯面向对象的语言。
6.下列关于Application和Applet程序的说法中不正确的一项是(B)。
(A)Application使用解释器java.exe(B)Application不使用独立的解释器
(C)Applet在浏览器中运行(D)Applet必须继承Java的Applet类
【解析】Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。
7.下列选项中,不属于Java核心包的一项是(A)。
(A)javax.swing(B)java.io
(C)java.utile(D)java.lang
【解析】凡是以java开头的包都是Java核心包,以javax开头的包则属于Java扩展包。
8.下列描述中,不正确的是(A)。
(A)不支持多线程(B)一个Java源文件不允许有多个公共类
(C)Java通过接口支持多重继承(D)Java程序分为Application和Applet两类
【解析】Java是支持多线程的语言。
9.阅读下列代码,选出该代码段正确的文件名(C)。
classA{
voidmethod1(){
System.out.println("Method1inclassA");
}
}
publicclassB{
voidmethod2(){
System.out.println("Method2inclassB");
}
publicstaticvoidmain(String[]args){
System.out.println("main()inclassB");
}
}
(A)A.java(B)A.class
(C)B.java(D)B.class
【解析】Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。
10.编译下面源程序会得到哪些文件(D)?
classA1{
}
classA2{
}
publicclassB{
publicstaticvoidmain(String[]args){
}
}
(A)只有B.class文件(B)只有A1.class和A2.class文件
(C)编译不成功(D)A1.class、A2.class和B.class文件
【解析】由于该程序包含3个类,每个类编译后都会生成1个字节码文件,因此编译后会生成以这3个类名命名的字节码文件。
二、填空题
1.Java程序的编译和执行模式包括2点,是半编译和半解释。
2.Java语言支持TCP/IP协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的对象。
3.开发Java程序的一般步骤是:
源程序编辑、生成字节码和解释执行。
4.每个JavaApplication程序可以包括许多方法,但是必须有且只能有一个main()方法,统一格式为publicstaticvoidmain(String[]args),它是程序执行的入口。
5.JVM把字节码程序与各种不同的操作系统和硬件分开,使得Java程序独立于平台。
6.在Java程序中,能在WWW浏览器上运行的是Applet程序。
7.Java源程序文件和字节码文件的扩展名分别为.java和.class。
8.如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上importjava.utitle.*语句。
三、编程题
1.编写一个JavaApplication类型的程序,输出“ThisismyfirstJavaApplication!
”。
【编程分析】要编写JavaApplication类型的程序,需要在JCreator中创建一个JavaApplication类型的工程,这时JCreator会自动创建程序框架,该框架包含一个公共类,其中包含一个main()方法。
删除main()方法中自动生成的代码,编写自己的代码即可。
由于该程序要求输出一句话,因此在main()方法中直接调用System.out.println()或System.out.print()方法即可实现。
【参考程序】
publicclassX3_1{
publicstaticvoidmain(Stringargs[]){
System.out.println("ThisismyfirstJavaApplication!
");
}
}
【运行结果】
ThisismyfirstJavaApplication!
2.编写一个JavaApplet类型的程序,输出“这是我的第一个JavaApplet类型的程序”。
【编程分析】要编写一个JavaApplet类型的程序,首先利用JCreator创建一个JavaApplet类型的工程,该工程自动创建两个文件,一个源文件(.java文件)和一个HTML文件(.html文件),源文件中包含一个公共类,其中包含两个方法,即init()方法和paint()方法,由于该程序只是要求输出一句话,因此只要将paint()方法中g.drawString()方法的第一个参数修改为要输出的内容即可。
如果不是利用JCreator开发工具,而是利用J2SDK,则用户需要自己编写HTML文件。
【参考程序】
importjava.awt.*;
importjava.applet.*;
publicclassX3_2extendsApplet{
publicvoidpaint(Graphicsg){
g.drawString("这是我的第一个JavaApplet类型的程序",50,50);
}
}
【运行结果】
第2章
一、选择题
1.下列(D)是合法的标识符?
(A)12class(B)void(C)-5(D)_blank
【解析】根据Java标识符的构成规则确定。
2.下列(B)不是Java中的保留字?
(A)if(B)sizeof(C)private(D)null
【解析】根据Java保留字表进行选择。
3.下列(C)不是合法的标识符?
(A)$million(B)$_million(C)2$_million(D)$2_million
【解析】根据Java标识符的构成规则确定。
4.下列选项中,(B)不属于Java语言的基本数据类型?
(A)整数型(B)数组(C)浮点型(D)字符型
【解析】根据Java语言的基本数据类型包含的类别选取。
5.下列关于基本数据类型的说法中,不正确的一项是(D)。
(A)boolean类型变量的值只能取真或假
(B)float是带符号的32位浮点数
(C)double是带符号的64位浮点数
(D)char是8位Unicode字符
【解析】Java中的字符采用的是16位的Unicode字符。
6.下列关于基本数据类型的取值范围的描述中,正确的一个是(B)。
(A)byte类型的取值范围是-128~128(B)boolean类型的取值范围是真或假
(C)char类型的取值范围是0~65536(D)short类型的取值范围是-32767~32767
【解析】根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128~127,其他类型也是如此。
7.下列关于Java语言简单数据类型的说法中,正确的一项是(A)。
(A)以0开头的整数代表8进制整型常量
(B)以0x或0X开头的整数代表8进制整型常量
(C)boolean类型的数据作为类成员变量的时候,相同默认的初始值为true
(D)double类型的数据占计算机存储的32位
【解析】根据每种数据类型的特性进行判断。
8.下列Java语句中,不正确的一项是(C)。
(A)$e,a,b=10;(B)charc,d=‘a’;
(C)floate=0.0d;(D)doublec=0.0f;
【解析】不能将double类型的常量赋值给float类型的变量。
9.在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是(D)。
(A)byte的默认值是0(B)boolean的默认值是false
(C)char类型的默认值是’\0’(D)long类型的默认值是0.0L
【解析】long类型的默认值是0L,而不是0.0L。
10.下列语句中不正确的一个是(B)。
(A)floatf=1.1f;(B)byteb=128;
(C)doubled=1.1/0.0;(D)charc=(char)1.1f;
【解析】bytel类型变量的取值范围是-128~127。
11.下列表达式1+2+"aa"+3的值是(B)。
(A)"12aa3"(B)"3aa3"(C)"12aa"(D)"aa3"
【解析】整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。
12.已知y=2,z=3,n=4,则经过n=n+-y*z/n运算后n的值为(A)。
(A)3(B)-1(C)-12(D)-3
【解析】根据运算符的优先级,该表达式相当于n=n+((-y)*z)/n。
13.已知a=2,b=3,则表达式a%b*4%b的值为(A)。
(A)2(B)1(C)-1(D)-2
【解析】根据运算符的优先级,该表达式相当于((a%b)*4)%b。
14.已知x=2,y=3,z=4,则经过z-=--y–x--运算后,z的值为(D)。
(A)1(B)2(C)3(D)4
【解析】在表达式运算过程中,--y的值变为2,x—的值还是2,等号右侧运算后的值为0,因此z的值没有变化。
15.表达式(12==0)&&(1/0<1)的值为(B)。
(A)true(B)false(C)0(D)运行时抛出异常
【解析】由于(12==0)的值为false,因此整个表达式发生短路运算,即(1/0<1)就没有参与运算,整个表达式的值为false。
16.设有类型定义shorti=32;longj=64;下面赋值语句中不正确的一个是(B)
(A)j=i;(B)i=j;(C)i=(short)j;(D)j=(long)i;
【解析】long类型的数据不能自动转变为short类型,因此不能将long类型的变量直接赋值给short类型。
17.现有1个char类型的变量c1=66和1个整型变量i=2,当执行c1=c1+(char)i;语句后,c1的值为(D)。
(A)'d'(B)'D'(C)68(D)语句在编译时出错
【解析】两个字符型的数据相加,得到的是一个整数,而如果把整数再赋值给一个字符型变量则会在编译时出错。
18.下列说法中,正确的一项是(D)。
(A)字符串"\\abcd"的长度为6(B)False是Java的保留字
(C)123.45L代表单精度浮点型(D)False是合法的Java标识符
【解析】Java语言对字符的大小写是敏感的,False不是false,因此False是合法的Java标识符。
19.以下的变量定义语句中,合法的是(D)
(A)float_*5=123.456F;(B)byte$_b1=12345;
(C)int_long_=123456L;(D)doubled=Double.MAX_VALUE;
【解析】(A)中_*5不是合法的标识符,(B)中12345超出byte范围,(C)中不能将long类型的常量赋值给int型的变量。
20.下列关于运算符优先级的说法中,不正确的一个是(C)
(A)运算符按照优先级顺序表进行运算
(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的
(C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的
(D)括号可以改变运算的优先次序
【解析】同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。
二、填空题
1.变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:
字符型和数值型。
2.Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是byte、int、short和long。
3.boolean类型数据不可以做类型转换。
4.在Java语言的基本数据类型中,占存储空间最少的类型是boolean,该类型占用的存储空间为1位。
5.Java语言中的保留字具有特殊意义和作用,不能作为普通标识符使用。
6.在Java语言中,浮点类型数据属于实型数据,可以分为单精度和双精度两种。
7.char类型的数据可以表示的字符数共为65536。
8.定义初始值为10的8次方的常整型变量iLong的语句是finaliLong=100000000L。
9.Java语言中的数据类型转换包括自动转换和强制转换两种。
10.Java中的字符采用的是16位的Unicode编码。
11.数据类型中存储空间均为64位的两种数据类型是long和double。
12.表达式9*4/-5%5的值为-2。
(十进制表示)
13.表达式5&2的值为0。
(十进制表示)
14.表达式42<<4的值为672。
(十进制表示)
15.表达式11010011>>>3的值为11010。
(二进制表示)
16.表达式7|3的值为7。
(十进制表示)
17.表达式10^2的值为8。
(十进制表示)
18.Java语言中的逻辑与(&&)和逻辑或(||)运算采用短路方式进行运算。
19.若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为82。
20.假设i=10,j=20,k=30,则表达式!
(i(i+10<=j)的值为false。
三、编程题
1.编写一个JavaApplication类型的程序,定义一个byte类型的变量b,并从键盘上给它赋值为-100和100时,输出该变量的值。
【编程分析】要实现键盘输入一个byte类型的变量,首先创建输入流对象,再利用该对象的readLine()方法输入字符串,然后利用Byte类的parseByte()方法将输入的字符串转化为字节类型,最后通过System.out.println()方法输出该变量。
【参考程序】
importjava.io.*;
publicclassX2_3_1{
publicstaticvoidmain(String[]args)throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
byteb;
Stringstr=br.readLine();
b=Byte.parseByte(str);
System.out.println(b);
b=Byte.parseByte(str);
System.out.println(b);
}
}
【运行结果】
-200
Exceptioninthread"main"java.lang.NumberFormatException
atjava.lang.Byte.parseByte(Byte.java:
124)
atjava.lang.Byte.parseByte(Byte.java:
79)
atEX11_1.main(EX11_1.java:
8)
注意:
给b赋值的范围只能在-128至127之间,如果超出这个范围,则发生例外。
2.编写一个JavaApplet类型的程序,计算输出表达式12+5>3||12-5<7的值。
【编程分析】由于表达式12+5>3||12-5<7的最终结果是boolean类型,因此可以将该表达式赋值给一个boolean类型的变量,然后输出该变量的值。
【参考程序】
importjava.awt.*;
importjava.applet.*;
publicclassX2_3_2extendsApplet{
publicvoidpaint(Graphicsg){
booleanb=12+5>3||12-5<7;
g.drawString("b="+b,50,60);
}
}
【运行结果】
3.编写一个JavaApplication类型的程序,从键盘上输入三角形的三条边的长度,计算三角形的面积和周长并输出。
根据三角形边长求面积公式如下:
,其中a、b、c为三角形的三条边,s=(a+b+c)/2。
【编程分析】该程序由于涉及到数据输入,因此首先建立输入流对象,输入三角形三条边a、b、c的值,然后求出中间变量s的值,最后利用数学方法Math.sqrt()方法求出三角形的面积并输出。
【参考程序】
importjava.io.*;
publicclassX2_3_3{
publicstaticvoidmain(String[]args)throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
doublea,b,c,s,area;
Stringstr;
str=br.readLine();
a=Double.parseDouble(str);
str=br.readLine();
b=Double.parseDouble(str);
str=br.readLine();
c=Double.parseDouble(str);
s=(a+b+c)/2.0;
area=Math.sqrt(s*(s-a)*(s-b)*(s-c));
System.out.println("area="+area);
}
}
【运行结果】
3
4
5
area=6.0
注意:
输入的三角形的三条边必须满足三角形的构成规则,如果不满足则输出错误结果。
4.编写一个JavaApplication类型的程序,从键盘上输入摄氏温度C,计算华氏温度F的值并输出。
其转换公式如下:
F=(9/5)*C+32
【编程分析】该程序和上一个程序类似,在此不再赘述。
【参考程序】
importjava.io.*;
publicclassX2_3_4{
publicstaticvoidmain(String[]args)throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
doubleC,F;
Stringstr;
str=br.readLine();
C=Double.parseDouble(str);
F=(9/5)*C+32;
System.out.println("F="+F);
}
}
【运行结果】
37
F=69.0
5.已知圆球的体积公式为4/3
r3,编一程序,输入圆球半径,计算并输出球的体积。
【编程分析】该程序和第3题类似,在此不再赘述。
【参考程序】
importjava.io.*;
publicclassX2_3_5{
publicstaticvoidmain(String[]args)throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
intradius;
doublevolume;
Stringstr;
System.out.print("Enterthevalueofradiusplease:
");
str=br.readLine();
radius=Integer.parseInt(str);
volume=4*Math.PI*Math.pow(radius,3)/3;
System.out.println("volume="+volume);
}
}