Java程序设计课后练习答案_第1页
Java程序设计课后练习答案_第2页
Java程序设计课后练习答案_第3页
Java程序设计课后练习答案_第4页
Java程序设计课后练习答案_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精选文库Java程序设计课后练习答案第一章 Java概述一、选择题1. ( A )是在Dos命令提示符下编译Java程序的命令,( B )是运行Java程序的命令。 A. javacB. javaC. javadocD. javaw2. ( D )不是Java程序中有效的注释符号。A. /B. /* */C. /* */D. */ */3. ( B )不是Java语言的特点。A. 面向对象B. 自动检查语法错误C. 跨平台D. 解释执行4. Java编译器会将Java程序转换为( C )A. 可执行代码B. 目标代码C. 字节码D. 机器代码5. Java源文件的扩展名是( D )A. .classB.jarC.javD.java二、简答题1、 Java的跨平台的含义是什么?为什么Java可以跨平台?Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。以下图展示了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程序从编译到最后运行的完整过程。5)、 分布式分布式包括数据分布和操作分布,而Java支持WWW客户机/服务器计算模式,因此也支持这两种分布式。6)、 多线程Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。三、综合编程题1、 请编写一个简单的Java程序能够输出“这是我的第一个Java程序”。(注意为程序添加合适的注释和文档注释)。/* * 第一个java程序 */public class Demo /* * main方法,程序的起点 */public static void main (String args) /向控制台输出 System.out.println (这是我的第一个Java程序); 第二章 Java语法基础一、选择题1. 下面哪个单词是Java语言的关键字( B )?A. c2 c X. # f% W3 O9 $ 7 cDoubleB. thisC. stringD. bool2. 下面属于Java关键字的是( D )。 A. NULLB. IFC. Do D. goto3. 在启动Java应用程序时可以通过main( )方法一次性地传递多个参数。如果传递的参数有多个,可以用空格将这些参数分割;如果某一个参数本身包含空格,可以使用( B )把整个参数引起来。 A. 单引号 B. 双引号A2 ! l& h& I: Q$ a H4 o4 S4. 下面哪个是Java语言中正确的标识符( BD )。A. 5xB. $xC. abc D. com5. Java语言中,下列标识符错误的是( D )。 A. _* A, / A |% labcB. abcC. ABC D. 5abc6. 在Java中,整型常量不可以是( A )。 A. ! r; * z& V D0 T0 ) _doubleB. LongC. int D. byte 7. 在Java中,不属于整数常量的是( D )。 A. : n h: R- C+ D100B. 100LC. 0x100A D. 6.0f 8. 下面哪个语句能定义一个字符变量chr( B )。A. char chr=abcd; B. char chr=uabcd; C. char chr=”abcd”; D. char chr=uabcd; 9. 下面哪个是对字符串s1的不正确定义( CD )。A. String s1=”abcd”; B. String s1; C. 2 V2 X2 U0 F4 * x) String s1=abcd0; D. String s1=”abcd”;10. 下面哪个范围是char型的取值范围( C )。A. -256 255 B. - (215) (215)-1 C. u0000 uffff D. 03276711. 下面哪条语句不能定义一个float型的变量f1( ABD )。 A. - y c! B& Q$ ) m W- pfloat f1= 3.1415E10 B. float f1=3.14 C. float f1=3.1415F D. f1=3.14F12. 下列运算结果为float的是( C )。 A. 100/10 B. 100*10 C. 100.0+10D. 100-1013. 数组中可以包含什么类型的元素( D )。 A. int型 B. string型 C. 数组 D. 以上都可以14. Java中定义数组名为xyz,下面哪项可以得到数组元素的个数( B )。A. xyz.length( ) B. xyz.length C. len(xyz) D. ubound(xyz) 15. 下面哪条语句定义了3个元素的数组( A )。A. int a=20,30,40; B. int a =new int(3); C. int 3 array; D. int arr;二、简答题1、 Java有哪些基本的数据类型?写出这些基本数据类型所占用的最大空间(用字节描述)。(1)数字型 (number),具体又分为:a.整型 (integers),整型又包括:字节整数 (byte, 8 bits)短整数 (short, 16 bits)整数 (int, 32 bits)长整数 (long, 64 bits)b.实型 (real numbers),具体又分为:单精度(float, 32 bits)双精度(double, 64 bits)(2)字符型 (char, 16-bit Unicode字符)(3)布尔型 (boolean)。2、 说明Java字符编码的类型与特点。Java字符编码的类型为Unicode,具有以下特点:(1)Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言;(2)Unicode给每个字符提供了一个唯一的编码表示,不论是什么平台、程序或语言;(3)Windows系统(Windows 2000版本)、Java、XML、LDAP等已支持Unicode;(4)Unicode实现了ISO/IEC 10646标准;3、 写出Java中六个常用的转义字符。b 退格 t 制表符n 换行 (Newline) r 回车 (Carriage return) 单引号4、 下面的几个标示符哪些是正确的,哪些是错误的,如果是错误的,请说明原因。MyClass, _isHis, 3JavaProgram, _$asdf, Java-Visual-MachineMyClass:正确,符合标识符的组成规则。_isHis:正确,符合标识符的组成规则。3JavaProgram:错误,因为第1个符号不能为数字。 _$asdf:正确,符合标识符的组成规则。Java-Visual-Machine:错误,标识符不能为保留字。5、 说出常量与变量的定义并举例说明。常量是指程序执行过程中,值保持不变的量,类型划分如下: 整型常量 实型常量 布尔型常量 字符型常量 字符串常量如整型常量:起 始最大整数(正)最大长整数(正)举 例十进制0,1921474836479223372036854775807L23, +567,-12,0,1234八进制00177777777770777777777777777777777L034,0175,-0777L十六进制0x0x7FFFFFFF0x7FFFFFFFFFFFFFFFL0xFF, 0x45L变量是指在程序执行过程中,值可以改变的量,类型划分为:整型变量、实型变量、字符型变量、字符串变量、布尔变量等。如:int x=2,就定义了一个整型变量x并且赋值为2。6、 什么是强制类型转换?并说明其运用场合。显型类型转换是强制类型转换,它是一种窄化转换 (narrowing conversion),如:double a = 1.5;float b = a;System.out.println(b= + b);编译: possible loss of precision数据精度丢失,数据丢失。强制类型转换一般运用在二元运算符的二个操作数类型不同表达式值的类型与变量的类型不同7、 描述Java程序的构成。如何判断Java程序的主类?下面的程序有哪些错误并改正,该程序的源代码应当保存为什么名字的文件?Public class MyClassPublic static void main()System.out.printIn(“my name is ”);System.out.printIn(“the end!”);Java程序的主类中包含main(),而其它类中没有;该程序的源代码应当保存为MyClass.java。另外该程序中包含以下的错误:(1) Public的第一个字符应当小写;(2) 定界符“”应当改为;(3) printIn应该为println(4) System.out.printIn(“the end!”); 代码应放在方法中8、 结构化程序设计有哪三种基本流程?分别对应Java中的那些语句?结构化程序设计有下面三种基本流程:顺序结构语句,条件选择语句,循环控制语句,跳转/转向语句。条件选择语句对应Java中的if,if-else,嵌套的if-else,条件运算符,switch-case。循环控制语句对应Java中的for,while,do-while语句。跳转/转向语句对应Java中的contonue,break,return语句。9、 在一个循环中使用break,continue,return的差别。break: 跳出(中止)循环continue: 结束本次循环return: 方法返回10、 数组的定义,特点与分类。如何进行数组的初始化?数组的定义:数组是一组同类型的变量或对象的集合。数组的特点:数组的类型可以是基本类型,或类和接口;数组中每个元素的类型相同;引用数组元素通过数组名下标;数组下标(数组的索引)从0开始。数组是一种特殊的对象(Object),可以定义类型 (声明);创建数组 (分配内存空间) ;释放 (Java虚拟机完成)。数组分类:一维数组、多维数组。第三章 面向对象的实现一、 选择题1. 在Java中,用package说明一个包时,该包的层次结构必须是( B )。A. 与文件的结构相同 B. 与文件的目录层次相同 C. 与文件的类型相同 D. 与文件大小相同2. 下列构造方法的调用方式中,正确的是( C )。A. 按照一般方法调用B. 由用户直接调用C. 可通过new自动调用D. 被系统调用3. int 型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )。A. public int MAX_LENGTH=100 B. final int MAX_LENGTH=100C. public const int MAX_LENGTH=100D. public final int MAX_LENGTH=1004. 在Java中,以下叙述不正确的是 ( B ) A. 构造方法名与类名相同。B. 构造方法不是用来完成初始化的。 C. 构造方法由 new 操作调用,而不能被用户直接调用。 D. 构造方法没有返回类型。 5. 在Java中,下面的叙述哪个是不正确的?( D ) A. 类的静态方法可以在该类的对象被创建前调用B. 类的静态方法不能访问该类的非静态方法C. abstract 修饰符可以出现在类或方法的前面,但不能出现在变量之前D. final 修饰符可以出现在类或变量之前,但不能出现在方法之前6. 在Java里,下列选项( D )不是实现面向对象思想的机制。A. 封装B. 继承C. 多态D. 数据类型转换7. 类Worker是类Person的子类,Worker构造方法中有一句super( );,该语句是什么意思?( C )A. 调用类Worker中定义的super( )方法B. 调用类Person中定义的super()方法C. 调用类Person的构造函数D. 语法错误8. 给定Java程序,如下:编译运行Test.java,结果是( C )。public class Testprivate static final int counter=10;public static void main(String args) System.out.println(counter+);A.10B.11C.编译错误D.运行时出现异常9. 给定如下Java代码,编译时会在( D )出现错误。(只选择一项) class Parent class Child extends Parentpublic static void main(String args)Parent p1 = new Child( ); /第一行Parent p2 = new Parent( ); /第二行Child c1 = new Child( ); /第三行Child c2 = new Parent( ); /第四行A. 第一行B. 第二行C. 第三行 D. 第四行10. 在Java中,某类方法使用下列( BC )访问修饰符修饰后,可以被其的子类访问。A. privateB. protectedC. publicD. friendly11. 在Java 语言中,如果你有下面的类定义:abstract class Shapeabstract void draw();class Square extends Shape以下描述正确的是( B )A. 一切成功编译B. Shape可以编译,Square不能编译C. Square可以编译,Shape不能编译D. Square,Shape都不能编译12. 分析下列Java代码:class Apublic static void main(String args)method( );static void method( )System.out.println(Hello);System.exit(0);System.out.println(good-bye);编译运行后,输出结果是( A )。A. HelloB. good-byeC. Hello后面是good-byeD. 代码不能编译13. 下表是final修饰符与变量、方法、类等一起作用的结果的对应表,但是对应关系存在错误,请选择正确的对应关系。( C )概念 作用 1变量 A 不能再产生子类 2方法 B 一旦赋值,就不能更改 3类 C不能在子类中覆盖A. 1-A2-B3-CB. 1-C 2-A3-BC. 1-B2-C3-AD. 1-C 2-B3-A14. 有以下程序:public class ConstOver public ConstOver (int x, int y, int z) 下面哪个方法重载了上面的ConstOver构造方法?( B )A. protected int ConstOver ( ) B. private ConstOver (int z, int y, byte x) C. public object ConstOver (int x, int y, int z) D. public void ConstOver (byte x, byte y, byte z) 15. 有以下程序:class BaseClass private float x = 1.0f ;public float getVar() ( return x;)class Subclass extends BaseClass private float x = 2.0f;/ insert code here下面哪个方法加到程序中的“/insert code here”位置是有效的重定义父类的方法。( B )A. protected float getVar ( ) return x;B. public float getVar( ) return x;C. protected float double getVar( ) return x;D. public float getVar(float f) return f;16. 指出下列程序运行的结果( B )public class ExampleString str = new String(good); char ch = a,b,c; public static void main(String args)Example ex=new Example( ); ex.change(ex.str,ex.ch);System.out.print(ex.str + and );System.out.print(ex.ch); public void change(String str, char ch )str = test ok;ch0 = g;A. good and abc B. good and gbc C. test ok and abcD. test ok and gbc17. 下列哪些语句关于内存回收的说明是正确的? ( B )A. 程序员必须创建一个线程来释放内存;B. 内存回收程序负责释放无用内存;C. 内存回收程序允许程序员直接释放内存;D. 内存回收程序可以在指定的时间释放内存对象。18. 创建一个名为“MyClass.java”的文件,该文件中只有一个可被整个工程中的所有类访问的类,那么该类的正确声明应为:( C )A. private class MyClass extends Object B. class TestClass extends Object C. public class MyClassD. public class TestClass19. 下列叙述中,错误的是 ( A )A. 内部类的名称与定义它的类的名称可以相同B. 内部类可用abstract修饰C. 内部类可作为其他类的成员D. 内部类可访问它所在类的成员20. 用于在子类中调用被重写的父类方法的关键字是 ( B )A. thisB. superC. ThisD. Super21. 下面程序输出结果是 ( A )public class Delta static boolean foo(char c) System.out.print(c);return true;public static void main( String argv ) int i =0;for ( foo(A); foo(B)&(i2); foo(C)i+ ;foo(D);A. ABDCBDCBB. ABCDABCDC. 编译错误D. 运行时异常22. 下列( B )修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问。 A. privateB. 无修饰符C. publicD. protected 23. 给出下列代码,如何使成员变量m 被方法fun( )直接访问? ( C )class Testprivate int m; public static void fun( ) . A. 将private int m 改为protected int mB. 将private int m 改为 public int mC. 将private int m 改为 static int mD. 将private int m 改为 int m24. 已知有下列类的说明,则下列哪个语句是正确的? ( A )public class Testprivate float f = 1.0f; int m = 12; static int n = 1; public static void main(String args)Test t = new Test( ); A. t.f;B. this.n;C. Test.m;D. Test.f; 25. 下列代码的执行结果是 ( A )public class Testpublic void aMethod( ) static int i = 0; i+; System.out.println(i);public static void main(String args)Test test = new Test( ); test.aMethod( ); A. 编译错误B. 0 C. 1D. 运行成功,但不输出 26. 若特快订单是一种订单,则特快订单类和订单类的关系是( C )A. 使用关系B. 包含关系C. 继承关系D. 无关系 27. 下列代码中,将引起一个编译错误的行是( D )1)public class Test 2) int m,n; 3) public Test( ) 4) public Test(int a) m=a; 5) public static void main(String args) 6) Test t1,t2; 7) int j, k; 8) j = 0; k = 0; 9) t1 = new Test(); 10) t2 = new Test(j,k); 11) 12) A. 第3行B. 第5行 C. 第6行D. 第10行28. 下列叙述中,错误的是( D )A. 父类不能替代子类B. 子类能够替代父类C. 子类继承父类D. 父类包含子类二、 程序阅读题1、 写出以下程序的结果:public class Test private static void printArray(int arr) for(int i=0;i arr.length;i+) System.out.print(arri+”,”); System.out.println(“n”); private static void changeValue(int value) value*=2; private static void changeValue(int arr) for(int i=0;i10) throw Exception(something wrong!);B. if (i10) throw Exception e (something wrong!);C. if (i10) throw new Exception(something wrong!);D. if (i10) throw new Exception e (something wrong!);5. 分析下列Java代码:class Apublic static void main(String args)method( ); static void method( )trySystem.out.println(Hello);System.exit(0); finallySystem.out.println(good-bye); 编译运行后,输出结果是( A )A. HelloB. good-byeC. HelloD. 代码不能编译good-bye6. 关于捕获错误的语法try-catch-finally的下列描述正确的是( C )。A. try必须和catch搭配使用B. try可以单独使用C. try-finally可以搭配使用D. 在try块后如果定义了finally,则不能再定义catch块7. 在Java 中,假定有一个包含引起异常(不是一个RuntimeException)的代码的方法,用什么方式告诉方法的调用者要捕获该异常。( B )A. throw ExceptionB. throws ExceptionC. new ExceptionD. 不用特别指定8. 考虑下列JAVA代码:class Apublic static void main(String args)trySystem.out.println(Hello,World!); 这段代码错误的原因是( A )。A. 没有catch和finally块B. 没有抛出异常的代码不能出现在try代码块内C. 如果没有catch块而使用try,main( )会总是抛出异常D. class A没有throws IOException9. 考虑一下代码,编译运行之后,会( D )String s=null;System.out.println(s.charAt(0);A. 输出nullB. 没有输出C. 编译错误D. 编译成功,但是运行时报NullPointerException异常10. 研究下面的Java代码:public class testException public static void main(String args) int a =0,1,2,3,4; int sum=0; tryfor(int i=1;i6;i+)sum=sum+ai;System.out.println(sum= + sum); catch(ArrayIndexOutOfBoundsException e)System.out.println(数组越界); finallySystem.out.println(程序结束); 输出结果将是( C )。A. 10 数组越界程序结束B. 10 程序结束C. 数组越界 程序结束D. 程序结束第五章 java.lang包和字符串一、 选择题1. Java编程所必须的默认引用包为( B ) A. java.sys包B. java.lang包 C. java.new包D. 以上都不是 2. 在Java中,所有类的根类是( A )A. java.lang.ObjectB. java.lang.Class C. java.applet.AppletD. java.awt.Frame 3. 设有下面两个赋值语句:x1=Integer.parseInt(123);x2=Integer.valueOf(123).intValue();下述说法正确的是( D )。A. x1为int型变量,x2为Integer类的对象B. x2为int型变量,x1为Integer类的对象C. x1、x2均为Integer类的对象D. x1、x2均为int型变量4. 在Java中,存放字符串常量的对象属于( B )类对象。A. Character B. StringC. StringBufferD. Vector5. 已知如下定义:String str = I love;下面( D )表达式是合法的。A. char ch = str0;B. int len = str.length;C. String to = str.delete(1, 2);D. str += China;6. 设有以下程序段,执行后,屏幕输出( A )。String s1 = I love +China;String s2 = new String(s1);if (s1 = s2)System.out.println(=);if (s1.equals(s2) = true)System.out.print(equals);A. equalsB. =C. = equalsD. 不输出7. 下列方法中,不属于类String的方法是( D )。A. toLowerCase ()B. replace ()C. charAt ()D. append ()8. 有下列程序: public class aapublic static void main(String args) String s = 18.03;try double number1 = Double.parseDouble(s);System.out.print(number1);int number2 = Integer.parseInt(s);System.out.println( + number2);catch(NumberFormatException nfe) System.out.println( Sorry);catch(Exception e)执行结果是( C )。A. 18.03B. SorryC. 18.03 SorryD. 程序编译错误第六章 java.lang包和字符串一、 选择题1. 下列( A )集合不能含有重复元素。A. SetB. ListC. MapD. Collection2. 当元素个数固定时,使用( D )集合查找效率最高。A. SetB. ListC. MapD. Arrays3. 你希望存储少量数据并能快速访问. 你并不需要排序这些数据,那种数据结构最适合这种需求? ( D )A. TreeSet B. HashMapC. LinkedListD. 数组4. 欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?( B ) A. ArrayList myList=new Object();B. List myList=new ArrayList();C. ArrayList myList=new List(); D. List myList=new List();5. 关于HashMap和TreeMap类,判断下列那种说法是正确的?( A )A. 它们都能方便地定位映射中的值对象B. 它们都实现了SortedMap接口C. 它们都能高效地按照顺序遍历键D. 以上说法都不对6. 下列哪个不是Iterator接口所定义的方法?( D )A. hasNext()B. next()C. remove()D. nextElement()7. 关于链表结构,陈述错误的是哪个?( B )A. 链表可动态增长B. 在链表中查找对象是最有效的C. 链表中的元素可以重复D. 通常情况下,向链表中插入元素的效率高于向ArrayList中插入元素的效率8. Java语言的集合框架类定义在( B )语言包中。A. java.langB. java.utilC. java.arrayD.java.collections 9. Set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论