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(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源文件不允许有多个公共类2(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程序中,能在程序。7.Java源程序文件和字节码文件的扩展名分别为.java和.class。8.如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上importjava.utitle.*语句。3三、编程题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);}}【运行结果】4第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)。5(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/01)的值为(B)。(A)true(B)false(C)0(D)运行时抛出异常【解析】由于(12==0)的值为false,因此整个表达式发生短路运算,即(1/01)就没有参与运算,整个表达式的值为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.以下的变量定