收藏 分享(赏)

java各章习题及答案.doc

上传人:Marleyazariah 文档编号:21759353 上传时间:2024-04-22 格式:DOC 页数:76 大小:697.88KB
下载 相关 举报
java各章习题及答案.doc_第1页
第1页 / 共76页
java各章习题及答案.doc_第2页
第2页 / 共76页
java各章习题及答案.doc_第3页
第3页 / 共76页
java各章习题及答案.doc_第4页
第4页 / 共76页
java各章习题及答案.doc_第5页
第5页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、面向对象程序设计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

2、(B)1个字节码文件,扩展名为.class(C)3个字节码文件,扩展名为.java(D)3个字节码文件,扩展名为.class【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。4在创建Applet应用程序时,需要用户考虑问题是(B )。(A)窗口如何创建(B)绘制的图形在窗口中的位置(C)程序的框架(D)事件处理【解析】创建Applet程序时必须继承系统类Applet,而Applet类中已经包含了如何创建窗口以及事件处理等内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。5Java语言属于( B )种语言?(A)面向机器的语言(B

3、)面向对象的语言(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

4、.utile(D)java.lang【解析】凡是以java开头的包都是Java核心包,以javax开头的包则属于Java扩展包。8下列描述中,不正确的是( A )。(A)不支持多线程(B)一个Java源文件不允许有多个公共类(C)Java通过接口支持多重继承(D)Java程序分为Application和Applet两类【解析】Java是支持多线程的语言。9阅读下列代码,选出该代码段正确的文件名( C )。class Avoid method1()System.out.println(Method1 in class A);public class Bvoid method2()System.o

5、ut.println(Method2 in class B);public static void main(String args)System.out.println(main() in class B);(A)A.java(B)A.class(C)B.java(D)B.class【解析】Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。10编译下面源程序会得到哪些文件( D )?class A1class A2public class Bpublic static void main(String args)(A)只有B.class文件(B)只有A1.class和A

6、2.class文件(C)编译不成功(D)A1.class、A2.class和B.class文件【解析】由于该程序包含3个类,每个类编译后都会生成1个字节码文件,因此编译后会生成以这3个类名命名的字节码文件。二、填空题1Java程序的编译和执行模式包括2点,是 半编译 和 半解释 。2Java语言支持 TCP/IP 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的 对象 。3开发Java程序的一般步骤是:源程序编辑、 生成字节码 和 解释执行 。4每个Java Application程序可以包括许多方法,但是必须有且只能有一个 main() 方法,统一格式为 public

7、static void main(String args) ,它是程序执行的入口。5JVM把字节码程序与各种不同的 操作系统 和 硬件 分开,使得Java程序独立于平台。6在Java程序中,能在WWW浏览器上运行的是 Applet 程序。7Java源程序文件和字节码文件的扩展名分别为 .java 和 .class 。8如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上 import java.utitle.* 语句。三、编程题1编写一个Java Application类型的程序,输出“This is my first Java Application!”。【编

8、程分析】 要编写Java Application类型的程序,需要在JCreator中创建一个Java Application类型的工程,这时JCreator会自动创建程序框架,该框架包含一个公共类,其中包含一个main()方法。删除main()方法中自动生成的代码,编写自己的代码即可。由于该程序要求输出一句话,因此在main()方法中直接调用System.out.println()或System.out.print()方法即可实现。【参考程序】public class X3_1 public static void main(String args)System.out.println(Thi

9、s is my first Java Application!); 【运行结果】This is my first Java Application!2编写一个Java Applet类型的程序,输出“这是我的第一个Java Applet类型的程序”。【编程分析】 要编写一个Java Applet类型的程序,首先利用JCreator创建一个Java Applet类型的工程,该工程自动创建两个文件,一个源文件(.java文件)和一个HTML文件(.html文件),源文件中包含一个公共类,其中包含两个方法,即init()方法和paint()方法,由于该程序只是要求输出一句话,因此只要将paint()方

10、法中g.drawString()方法的第一个参数修改为要输出的内容即可。如果不是利用JCreator开发工具,而是利用J2SDK,则用户需要自己编写HTML文件。【参考程序】import java.awt.*;import java.applet.*;public class X3_2 extends Applet public void paint(Graphics g) g.drawString(这是我的第一个Java Applet类型的程序,50,50);【运行结果】第2章一、选择题1下列( D )是合法的标识符?(A)12class(B)void(C)-5(D)_blank【解析】根据

11、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类型变量的值只能取真

12、或假(B)float是带符号的32位浮点数(C)double是带符号的64位浮点数(D)char是8位Unicode字符【解析】Java中的字符采用的是16位的Unicode字符。6下列关于基本数据类型的取值范围的描述中,正确的一个是( B )。(A)byte类型的取值范围是-128128 (B)boolean类型的取值范围是真或假(C)char类型的取值范围是065536 (D)short类型的取值范围是-3276732767【解析】根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128127,其他类型也是如此。7下列关于Java

13、语言简单数据类型的说法中,正确的一项是( A )。(A)以0开头的整数代表8进制整型常量(B)以0x或0X开头的整数代表8进制整型常量(C)boolean类型的数据作为类成员变量的时候,相同默认的初始值为true (D)double类型的数据占计算机存储的32位【解析】根据每种数据类型的特性进行判断。8下列Java语句中,不正确的一项是( C )。(A)$e, a, b = 10; (B)char c, d = a;(C)float e = 0.0d; (D)double c = 0.0f;【解析】不能将double类型的常量赋值给float类型的变量。9在编写Java程序时,如果不为类的成员

14、变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是( D )。(A)byte的默认值是0 (B)boolean的默认值是false(C)char类型的默认值是0(D)long类型的默认值是0.0L【解析】long类型的默认值是0L,而不是0.0L。10下列语句中不正确的一个是( B )。(A)float f = 1.1f; (B)byte b = 128;(C)double d = 1.1/0.0;(D)char c = (char)1.1f;【解析】bytel类型变量的取值范围是-128127。11下列表达式1+2+ aa+3的值是( B )。(A)12aa3(B)3aa3

15、 (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【解析】

16、在表达式运算过程中,-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设有类型定义short i=32; long j=64; 下面赋值语句中不正确的一个是( B )(A)j=i;(B)i=j;(C)i=(short)j;(D)j=(long)i;【解析】long类型的数据不能自动转变为short类型,因此不能将long类

17、型的变量直接赋值给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以

18、下的变量定义语句中,合法的是( D )(A)float _*5 = 123.456F;(B)byte $_b1 = 12345;(C)int _long_ = 123456L;(D)double d = Double.MAX_VALUE;【解析】(A)中_*5不是合法的标识符,(B)中12345超出byte范围,(C)中不能将long类型的常量赋值给int型的变量。20下列关于运算符优先级的说法中,不正确的一个是( C )(A)运算符按照优先级顺序表进行运算(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的(C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的(D)

19、括号可以改变运算的优先次序【解析】同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。二、填空题1变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:字符型 和 数值型 。2Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是byte、 int 、 short 和long。3 boolean 类型数据不可以做类型转换。4在Java语言的基本数据类型中,占存储空间最少的类型是 boolean ,该类型占用的存储空间为 1 位。5Java语言中的 保留字 具有特殊意义和作用,不能作为普通标识符使用。6在Java语言中,浮点类型数据属于实型数据,可以分为

20、单精度 和 双精度 两种。7char类型的数据可以表示的字符数共为 65536 。8定义初始值为10的8次方的常整型变量iLong的语句是 final iLong = 100000000L 。9Java语言中的数据类型转换包括 自动转换 和 强制转换 两种。10Java中的字符采用的是16位的 Unicode 编码。11数据类型中存储空间均为64位的两种数据类型是 long 和 double 。12表达式9*4/ -5%5的值为 -2 。(十进制表示)13表达式5&2的值为 0 。(十进制表示)14表达式423的值为 11010 。(二进制表示)16表达式7|3的值为 7 。(十进制表示)17

21、表达式102的值为 8 。(十进制表示)18Java语言中的逻辑与(&)和逻辑或(|)运算采用 短路 方式进行运算。19若a、b为int型变量,并且已分别赋值为5和10,则表达式(a+)+(+b)+a*b的值为 82 。20假设i=10, j=20, k=30,则表达式 !(ij+k) | !(i+103|12-53|12-53|12-57;g.drawString(b = +b, 50, 60 );【运行结果】3编写一个Java Application类型的程序,从键盘上输入三角形的三条边的长度,计算三角形的面积和周长并输出。根据三角形边长求面积公式如下:,其中a、b、c为三角形的三条边,s

22、=(a+b+c)/2。【编程分析】该程序由于涉及到数据输入,因此首先建立输入流对象,输入三角形三条边a、b、c的值,然后求出中间变量s的值,最后利用数学方法Math.sqrt()方法求出三角形的面积并输出。【参考程序】import java.io.*;public class X2_3_3 public static void main(String args) throws IOException InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(i

23、sr); double a, b, c, s, area; String str; 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); 【运行结果】345area = 6.0

24、注意:输入的三角形的三条边必须满足三角形的构成规则,如果不满足则输出错误结果。4编写一个Java Application类型的程序,从键盘上输入摄氏温度C,计算华氏温度F的值并输出。其转换公式如下:F = (9 / 5) * C + 32【编程分析】该程序和上一个程序类似,在此不再赘述。【参考程序】import java.io.*;public class X2_3_4 public static void main(String args) throws IOException InputStreamReader isr = new InputStreamReader(System.in);

25、 BufferedReader br = new BufferedReader(isr); double C, F; String str; str = br.readLine(); C = Double.parseDouble(str); F=(9 / 5) * C + 32; System.out.println(F = +F); 【运行结果】37F = 69.05已知圆球的体积公式为4/3r3,编一程序,输入圆球半径,计算并输出球的体积。【编程分析】该程序和第3题类似,在此不再赘述。【参考程序】import java.io.*;public class X2_3_5 public sta

26、tic void main(String args) throws IOException InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int radius; double volume; String str; System.out.print(Enter the value of radius please: ); str = br.readLine(); radius = Integer.parseInt(str); volum

27、e=4*Math.PI*Math.pow(radius,3)/3; System.out.println(volume = +volume); 【运行结果】Enter the value of radius please: 26volume = 73622.17663932561第3章一、选择题1下列( D )不属于Java语言流程控制结构?(A)分支语句(B)跳转语句(C)循环语句(D)赋值语句【解析】Java语言流程控制结构只包括分支、循环和跳转三种语句。2假设a是int类型的变量,并初始化为1,则下列( D )是合法的条件语句?(A)if(a)(B)if(a=3)(C)if(a=2)(D

28、)if(true)【解析】条件语句中的“条件表达式”只能是boolean类型,不能是其他类型。3下列说法中,不正确的一个是( C )。(A)switch语句的功能可以由ifelse if语句来实现(B)若用于比较的数据类型为double型,则不可以用switch语句来实现(C)if else if语句的执行效率总是比switch语句高(D)case子句中可以有多个语句,并且不需要大括号括起来【解析】语句的执行效率高低要根据具体语句来确定,不能简单地说if else if语句的执行效率总是比switch语句高。4设a、b为long型变量,x、y为float型变量,ch为char类型变量且它们均已

29、被赋值,则下列语句中正确的是( B )。(A)switch(x+y) (B)switch(ch+1) (C)switch ch (D)switch(a+b); 【解析】switch后面的表达式必须放在括号()中,且表达式的类型只能是byte、short、int和char类型,不能是其他类型。5下列循环体执行的次数是( C )。int y=2, x=4;while(-x != x/y) (A)1(B)2(C)3(D)4【解析】第1次执行while时,-x的值为3,3/2=1,满足等号两端值不等的条件,执行一次循环体;第2次执行while时,-x的值为2,2/2=1,条件满足,又执行一次循环体;第

30、3次执行while时,-x的值为1,1/2=0,条件满足,再次执行一次循环体;第4次执行while时,-x的值为0,0/2=0,条件不满足满足,结束循环。因此在这个循环语句执行的过程中,循环体共执行了3次。6下列循环体执行的次数是( B )。int x=10, y=30;doy -= x; x+;while(x+y-);(A)1(B)2(C)3(D)4【解析】执行1次循环体后,y的值为20,x值为11,然后执行while,此时x+的值为11,y的值为20,因此x+y条件满足,判断完后,x的值变为12,y的值变为19;接着执行第2次循环体,执行完第2次循环体后,y的值为9,x值为13,然后执行w

31、hile,此时x+的值为13,y的值为9,因此x+y条件不满足,结束循环。因此在这个循环语句执行的过程中,循环体共执行了2次。7已知如下代码:switch(m)case 0: System.out.println(Condition 0);case 1: System.out.println(Condition 1);case 2: System.out.println(Condition 2);case 3: System.out.println(Condition 3);break;default:System.out.println(Other Condition);当m的值为( D )

32、时,输出“Condition 3”(A)2(B)0、1(C)0、1、2(D)0、1、2、3【解析】当m的值为0、1、2、3时,都能输出“Condition 3”,因为case 0、case 1、case 2后面的语句都没有break,因此可以继续向后执行。二、填空题1跳转语句包括break、continue、return和throw2switch语句先计算switch后面的 表达式 的值,再和各 case 语句后的值做比较。3if语句合法的条件值是 boolean 类型。4continue语句必须使用于 循环 语句中。5break语句有两种用途:一种从switch 语句的分支中跳出,一种是从循

33、环语句内部跳出。6do while循环首先执行一遍 循环体 ,而while循环首先判断 表达式的值 。7与C+语言不同,Java语言不通过 goto 语句实现跳转。8每一个else子句都必须和它前面的一个距离它最近的 if 子句相对应。9在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的 case 语句块。10在for循环语句中可以声明变量,其作用域是 for循环体 。三、写出下列程序的运行结果1public class X3_3_1 public static void main(String args) for(int i=0;

34、 i10; i+) if(i=5) break; System.out.print(i); 【运行结果】01234【程序解析】本程序主要考查break语句的使用。程序中的for循环变量i是从0到9进行循环,正常情况下应该输出0到9,但是由于循环体中有“if(i=5) break;”语句,当i为5时for循环就结束了,因此最后的结果是01234。2public class X3_3_2 public static void main(String args) int i=5, j=2; while(ji-) j+; System.out.print(j);【运行结果】4【程序解析】本程序主要考查

35、while语句以及“后缀-”运算符的使用。由于每执行一次while判断,i的值就减1,每执行1次循环体,j的值就增加1,而while判断总共经历了“25”、“34”、“40) System.out.print(i);【运行结果】0【程序解析】本程序主要考查while语句以及“前缀-”运算符的使用。由于i的初值为4,要使“while(-i0)”结束执行,必须等到i的为0,因此i最后的值为0。4public class X3_3_4 public static void main(String args) int j=0; for(int i=3; i0; i-) j += i; int x =

36、2; while(xj) x += 1; System.out.print(x); 【运行结果】33453456【程序解析】本程序主要考查for循环和while循环嵌套的情况。在for循环第1次执行到while语句时,j和x的值分别为3和2,此时“while(xj)”条件满足,进入while循环体执行,x值变为3,然后输出,再进行判断“while(x0”条件满足,进入for循环体。在for循环第2次执行到while语句时,j和x的值分别为5和2,此时“while(xj)”条件满足,进入while循环体执行,该循环体共执行3次,x值分别变为3、4、5,然后输出,在for循环第3次执行到while

37、语句时,j和x的值分别为6和2,此时“while(x0”条件不满足,退出for循环,结束程序执行。5public class X3_3_5 public static void main(String args) int i=8, j=2; while(j -i) for(int k=0; k4; k+) j+; System.out.print(j);【运行结果】6【程序解析】本程序主要考查while循环和for循环嵌套执行的情况。第1次执行“while(j -i)”时,j和i的值分别为2和7,条件满足,执行for循环,for循环体共执行了4次,j的值增4,变为6;然后又第2次执行“whil

38、e(j -i)”,此时j和i的值分别为6和6,条件不满足,结束while循环,输出j的值。6public class X3_3_6 public static void main(String args) int a=0, b=1; do if(b%2=0) a += b; b+; while(b = 100); System.out.print(a); 【运行结果】2550【程序解析】本程序主要考查dowhile循环的执行情况。执行循环体之前,a=0,b=1,进入循环体后,由于“b%2=0”的条件不满足,因此直接执行“b+”,b的值变为2,满足“while(b = 100)”条件,再次进入循环体。此时“b%2=0”的条件满足,语句“a+=b”执行,然后执行“b+”,再进行“while(b = 100)”判断,如此一直执行下去,直至该条件不满足为止,最后输出a的值。从循环过程来看,只有b为偶数时才加到a中去,因此a的值应该是“2+4+6+100”。7public class X3_3_7 public static void main(String args) for(int i=1; i=10; i+) if(i=5)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报