Java习题集(第三版)
- 格式:doc
- 大小:894.00 KB
- 文档页数:73
Java基础教程(第3版)习题答案部分习题答案第一章【答案】答案见教材<略>。
第二章1. 请说明注释的作用。
【答案】答案见教材<略>。
2. 判断下列那些是标识符?(1) 3class(2) byte(3) ? room(4) Beijing(5) beijing【答案】(1)(2)(3)不是标识符,因为标识符不能已数字开始,也不能是保留关键字(如byte),不能以?开始。
3. 请指出下列声明字符变量ch的语句是否存在错误?如果有,请改正。
(1)char ch = 'A';(2)char ch = '\u0020';(3)char ch = 88;(4)char ch = 'ab';(5)char ch = "A";【答案】(4)错,因为关键字char是用于声明字符变量,不可声明字符串变量。
4. 如果int x=1,y=-2,n=10;那么,表达式x+y+(--n)*(x>y&&x>0?(x+1):y)的值是什么类型?结果是多少?【答案】int型,值为17。
5. 如果int k=1,那么'H'+k的类型是什么?下面语句是否存在差错?如果有,请改正。
(1)int k=1;(2)char ch1,ch2;(3)ch1='H'+k;(4)ch2=98;【答案】'H'+k的类型为int型。
(3)有错。
'H'+k为int型,ch1为char型,将高精度赋给低精度类型时必须实行强制转换。
6. 请指出下面程序在编译时是否会出现错误。
如果有,请改正。
public class doubleTointExample {public static void main(String args[ ]) {int a;double b=1,c=2;a=(int)(b+c);System.out.println("a="+a);}}【答案】无错误。
第1章Java开发入门一、1.对象2.面向对象、跨平台性3.javac4.Java虚拟机(或JVM)5.JRE二、1.错2.错3.错4.对5.对三、1.C2.ABCD3.D4.ABCD5.D四、1.简答性、面向对象、安全性、跨平台性、支持多线程、分布性。
2. Java程序运行时,必须经过编译和运行两个步骤。
首先将后缀名为.java的源文件进行编译,生成后缀名为.class的字节码文件,然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。
五、HelloWorld.java1 public class HelloWorld {2 public static void main(String[] args) {3 System.out.println("这是第一个Java程序!");4 }5 }第2章Java编程基础一、1.class2.单行注释、多行注释、文档注释3.44.==5.容器、0二、1.对2.错3.对4.错5.对三、1.AC2.A3.BD4.C5.C四、1.Java语言的八种基本数据类型有:byte字节型,占一个字节。
short短整型,占两个字节。
int整型,占4个字节。
long长整型,占8个字节。
float单精度浮点型,占4个字节。
double 双精度浮点型,占8个字节。
char字符型,占两个字节。
boolean型,表示逻辑值,有true 和false两个值,分别占一个字节。
2. 在switch条件语句和循环语句中都可以使用break语句。
当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出循环语句,执行循环后面的代码;continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。
五、1.1public class getSum {2public static void main(String[] args) {3int sum = 0;4for (int i = 1; i < 100; i++) {5if (i % 2 != 0)6sum += i;7}8System.out.println(sum);9}10}2.1public class Test {2 public static void main(String[] args) {3 int i = 1;4 long sum = 1;5 do {6 sum *= i;7 i++;8 } while (i <= 5);9 System.out.println(sum);10 }11}第3章面向对象(上)一、1.封装、继承、多态2.private、default、protected、public3.static4.private5.参数类型参数个数6.this二、1.对2.对3.错4.对5.对三、1.C2.B3.D4.B5.C四、1.面向对象的特点主要可以概括为封装性、继承性和多态性。
JAVA实用教程(第三版)课后习题参考答案第1章 Java入门1. 开发与运行Java程序需要经过哪些主要步骤和过程?答:(1)编写Java源文件:使用文本编辑器(Edit或记事本),拓展名为.java(2)编译Java源文件:使用Java编译器(javac.exe)。
得到字节码文件*.class(3)运行Java程序:Java应用程序使用Java解释器(java.exe)执行字节码文件;Java小应用程序使用支持Java标准的浏览器来执行。
2. 怎样区分应用程序和小应用程序?应用程序的主类或小应用程序的主类必须用public修饰吗?答:①应用程序必须有main方法,这个方法是程序执行的入口。
小应用程序没有main方法。
②应用程序的主类不一定用public修饰;小应用程序的主类必须用public修饰。
3. Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎样的?答:①Java程序由类组成。
②应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。
③应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为.java;有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,拓展名为.java。
小应用程序:源文件名与主类的类名相同,拓展名是.java。
4. 在运行小程序的HTML文件中可以使用codebase属性指定小程序的字节码所驻留的目录。
如果不使用codebase属性,小程序的字节码文件必须和运行它的HTML文件在同一目录中。
编写一个小程序并将小程序的字节码存放在某个目录中,比如C:\5000;把运行该小程序的HTML文件(注意其中的codebase属性): <applet code=你的小程序的字节码 width=200 height=300 codebase=C:\5000></applet>存放在另一个目录中。
java基础入门第三版第七章编程题答案一、填空题1、JIK中提供了一系列可以存储任意对象的类,统称为一集合。
2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现CompanKor接口。
3、Collection有两个子接口分别是List和Set,List集合的特点是有序、可重复,Set集合的特点是无序、不可重复。
4、使用terator历集合时,首先需要调用hashNext()法判断是否存在下一个元素,若存在下一个元素,则调用next()方法取出该元素。
5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是Collection,双列集合的根接口是Map。
6、Map集合中的元素都是成对出现的,并且都是以键、值的映射关系存在。
7、Iterator有一个子类,不仅可以对集合进行从前向后遍历,还可以从后向前通历,该类是ListIterator8、List集合的主要实现类有Arfaylist、LinkedList,Set集合的主要实现类有HashSet、TreeSetMap集合的主要实现关有HashMap、TreeMap 。
9、Map集合中存储元素需要调用put()方法,要想根据该集合的键获取对应的值需要调用get()方法。
10、java.utilCollections,还提供了一个专门用于操作数组的工具类,这个类是Arrays二、判断题1、Set集合是通过键值对的方式来存储对象的。
错2、集合中不能存放基本数据类型,而只能存放引用数据类型对3、如果创建的TreeSet集合中没有传入比较器,则该集合中存入的元素需要实现Comparable接口。
对4、使用Iterator选代集合元素时,可以调用集合对象的方法增删元素。
错5、LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用。
对三、选择题1、要想保存具有映射关系的敏据,可以使用以下哪些集合?(多选)BCA、ArrayListB、 TseeMapC、 HashMapD、 TreeSet2、Java语言中,集合类都位于哪个包中?AA、java.utilB、javaj angC、java.arrayD、java.collections3、使用Ierator时,判断是否存在下一个元素可以使用以下哪个方法?DA、 next()B、hash()C 、hasPrevious() D、 hasNext()4、关于foreach循环的特点,以下说法哪些是正确的?(多选)ABDA、foreach循环在遍历集合时,无需获得容器的长度B、foreach循环在遍历集合时,无需循环条件,也无需迭代语句C、foreach循环在遍历集合时非常繁项D、foreach循环的语法格式为:for(容器中元素类型临时变量:容器变量)5、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?A、 HashMapB、TreeSetC、PropertiesD、TreeMap6、使用Emumeration遍历集合时,需要使用以下哪些方法?(多选)ABA、 hasMoreElements()B、 nextElement()C、next()D、hashNext()7、要想集合中保存的元素没有重复并且接照一定的顺序排列,可以使用以下哪个集合?DA、LinkedListB、Array ListC、hashSetD、TrccSet8、下列哪些说法是正确的?(多选)ABA、LinkedList集合在增删元素时效率较高B、ArrayList集合在查询元素时效率较高C、HashMap不允许出现一对nll键null值D、HashSet集合中元素可重复并且无序9、以下哪些方法是LinkedList集合中定义的?(多选)ABCA、getLast()B、getFirst()C、remove (int index)D、next()10.获取单列集合中元素的个数可以使用以下哪个方法?BA、length()B、size()C、get(int index)D、add(Object obj)四、程序分析题1、程序可以编译通过,输出结果是“a、b、c”,因为TreeSet集合不允许存放重复元素,第2次增加的元素c会覆盖之前存入的元素c,所以输出结果是“a、b、c”,而不是“a、b、c、c”。
Java基础教程第3版习题解答第一章习题1. James Gosling2.需3个步骤:1)用文本编辑器编写源文件2)使用javac编译源文件,得到字节码文件3)应用程序使用解释器运行。
3. path d:\jdk\binclasspath =d:\jdk\jre\lib\rt.jar;.;4.B5. java 和class6.D。
第二章习题1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
false不是标识符。
2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。
不是关键字。
class implements interface enum extends abstract。
3.float常量必须用F或f为后缀。
double常量用D或d为后缀,但允许省略后缀。
4.一维数组名.length。
二维数组名.length。
5. C6.ADF7. B8 【代码2】【代码3】【代码4】9.B。
10.属于操作题,解答略。
11.3,112.public class E {public static void main(String args[]) {System.out.println((int)'你');System.out.println((int)'我');System.out.println((int)'他');}}13.public class E {public static void main (String args[ ]) {char cStart='α',cEnd='ω';for(char c=cStart;c<=cEnd;c++)System.out.print(" "+c);}}第三章习题1. 1102.beep!!3.public class E {public static void main (String args[ ]) {for(char c='а'; c<='я';c++) {System.out.print(" "+c);}}}4.public class Xiti3_4{ public static void main(String args[]){ double sum=0,a=1;int i=1;while(i<=20){ sum=sum+a;i++;a=a*i;}System.out.println("sum="+sum);}}5.public class Xiti5{ public static void main(String args[]){ int i,j;for(j=2;j<=100;j++){ for(i=2;i<=j/2;i++){ if(j%i==0)break;}if(i>j/2){ System.out.print(" "+j);}}}}6.class Xiti6{ public static void main(String args[]){ double sum=0,a=1,i=1;do { sum=sum+a;i++;a=(1.0/i)*a;}while(i<=20);System.out.println("使用do-while循环计算的sum="+sum);for(sum=0,i=1,a=1;i<=20;i++){ a=a*(1.0/i);sum=sum+a;}System.out.println("使用for循环计算的sum="+sum);}}7.class Xiti7{ public static void main(String args[]){ int sum=0,i,j;for(i=1;i<=1000;i++){ for(j=1,sum=0;j<i;j++){ if(i%j==0)sum=sum+j;}if(sum==i)System.out.println("完数:"+i);}}}8.import java.util.*;public class E {public static void main (String args[ ]) {int m,n;Scanner scaner= new Scanner(System.in);System.out.println("输入正数m回车确认");m = scaner.nextInt();System.out.println("输入正数n回车确认");n = scaner.nextInt();int p=m;int q= n;int r = m%n;while(r!=0) {m = n;n =r;r =m%n;}System.out.println(p+"和"+q+"的最大公约数"+n);System.out.println(p+"和"+q+"的最小公倍数"+(p*q)/n);}}9.public class E{ public static void main(String args[]){ int n=1;long sum=0;while(true){ sum=sum+n;n++;if(sum>=8888)break;}System.out.println("满足条件的最大整数:"+(n-1));}}第四章习题1.用该类创建对象时。
第1章1.Java具有那些适合在Internet环境中的特点?【答】简单性和完全面向对象,平台无关性,安全性和可靠性,多线程,高效的网络编程。
2.Java保留、放弃了C/C++语言中哪些语法和面向对象机制?为什么需要这样做?【答】在语法规则方面,Java语言放弃了全程变量、goto语句、宏定义、全局函数以及结构、联合和指针数据类型,使Java语言更简单、更精练。
在面向对象概念方面,Java语言放弃了多元继承、友元类和运算符重载,采用“单重继承+接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式,使Java语言更健壮、更安全、更高效。
3.Java对原程序文件的命名规则有什么要求?源程序文件编译后生成什么文件?【答】要求:源程序文件与类同名,文件扩展名为.java;编译后生成字节码文件(*.class)。
4.Java程序的运行机制是怎样的?与C++或其他语言有什么不同?【答】Java的每一个类都有一个class文件和它对应,Java在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据Java的虚拟机规范进行连接(动态连接),程序的组装是在运行的时候完成的C++和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。
C++在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开5.什么是平台无关性?Java是怎样实现平台无关性的?【答】平台无关性即Java程序的运行不依赖于操作系统。
Java采用虚拟机技术实现平台无关性。
程序由虚拟机解释执行,不同的操作系统上运行不同版本的Java虚拟机。
6.Java应用程序由哪两种形式?他们的运行方式有什么不同?【答】Application和applet两种形式,其中application是能够独立运行的应用程序,既可以以DOS的命令方式运行,也可以以图形用户界面方式运行。
2 4 6 8 10 28 32 53 简答题单选全部判断题全部1 2 3 5 6 7 10 21 写程序题2 3 7 8 24 25 编程题JAVA语言程序设计习题集一、简答题1、Java程序分为哪两大类,它们之间有哪些相同点?主要区别有哪些?答:Java程序分为Java Application和Java Applet。
相同点有两个:(1)两类程序都由一个或多个以.class为后缀的文件组成;(2)两类程序都需要用户系统安装Java虚拟机(JVM)。
Java虚拟机能够载入并翻译Java程序,并且可以提供Java内核包的实现。
区别有:(1)Java Applet程序可以被嵌入HTML网页内,从而可以在网络上发布,当网页被浏览时它们可以在浏览器中运行;而Java Application程序却不支持网页嵌入和下载。
(2)Java Applet程序只能在与Java兼容的容器中运行,例如网络浏览器;而Java Application程序却没有这个限制。
(3)一个Java Applet程序必须定义一个Applet类的子类,一个Java Application程序也可以定义一个Applet类的子类,但这不是必须的,一个Java Application 程序必须在一个类中定义一个main方法,而一个Java Applet 程序并不定义main方法,它的执行是由Applet类定义的多个方法控制的。
2、Java程序是由什么组成的?Java 源文件的命名规则是怎样的?答:一个Java 程序是由若干个类组成的。
但只能有一个类是public 类。
Java源文件命名规则是:源文件名必须与其中的public 类的名字相同,扩展名是java;如果源文件中没有public 类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。
3、Java语言与Java技术的关系如何?Java语言包括哪两部分?答:Java语言是Java技术的基础。
Java语言包括语法规则和Java类库两部分。
4、开发与运行Java程序需要经过哪些主要过程?答:源程序编辑、字节码编译和解释运行。
5、为什么一个Java文件编译后可以获得多个字节码文件?答:这是因为一个源文件中可有多个类,文件经过编译后,每个类就生成一个字节码文件(扩展名为class)。
6、简述Java应用程序和Java小应用程序各用什么方式解释运行的?答:Java应用程序和Java小应用程序的源代码编辑与字节码编译生成过程是一样的,而其执行也都是解释执行其编译好的字节码文件,只是Java应用程序需使用独立的Java解释器来解释执行其字节码文件,而Java小应用程序的字节码文件必须嵌入到HTML语言的文件中并由负责解释HTML文件的WWW浏览器充当其解释器,来解释执行Java小程序的字节码文件。
7、面向对象的开发方法与传统的面向过程的开发方法有什么不同?答:传统的面向过程的开发方法是把现实世界的问题转化成计算机逻辑,而面向对象技术是计算机逻辑来模拟现实世界的问题。
8、什么是对象、类和实体?它们之间的关系如何?试述下面的说法映射到面向对象的计算机逻辑中分别对应什么概念。
(1)计算机92班(2)计算机92班的同学刘利(3)大学生(4)X大学的大学生(5)班级答:对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现;类是同种对象的集合与抽象。
(1)班级类的对象(2)大学生类的对象(3)大学生类(4)大学生类的子类(5)班级类9、对象有哪些属性?在计算机逻辑中如何描述这些属性?答:对象有状态、行为、标志三个属性;在计算机逻辑中分别用对象的变量、方法和对象名来描述这三个属性。
10、面向对象的开发包括哪些过程?答:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试。
11、面向对象程序设计方法有哪几个最重要的特点?答:抽象、封装、继承、多态。
12、什么是父类(超类)?什么是子类?父类、子类间属性有何关系?答:当两个类具有继承关系时,被继承的类称为父类或超类;继承了父类或超类的所有数据和操作的类称为子类。
父类是所有子类的公共属性的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能、内涵的扩展和延伸。
13、什么是封装?答:封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。
14、使用继承有什么好处?什么是单重继承?什么是多重继承?Java采用的是单重继承还是多重继承?答:使用继承的主要好处是使得程序结构清晰,降低了编码和维护的工作量。
只有一个单一父类称为单重继承。
一个类可以有一个以上的父类称为多重继承。
Java采用的是单重继承。
15、什么是多态?实现多态有哪些方式?答:一个程序中同名的不同方法共存的情况称为多态。
实现多态的方式有覆盖和重载。
16、什么是覆盖多态?什么是重载多态?覆盖多态和重载多态分别如何区分不同的同名方法?答:子类对继承自父类的方法的重新定义就称为方法的覆盖,这种多态称为覆盖多态;类对自身已有的同名方法的重新定义称为重载,这种多态称为重载多态。
覆盖多态以对象名或类名为前缀来区分不同的同名方法;而重载多态则是使用不同的参数列表来区分不同的同名方法。
17、类及类成员的访问控制符有哪些?答:public,protected,private,private protected。
18、构造函数特殊在哪里?构造函数什么时候执行?被谁调用?答:构造函数的特殊性在于它既可以从父类那里继承,也可以相互重载。
构造函数在创建新对象时执行,由系统自动调用。
19、类的访问说明符有哪些?答:有public,final,abstract,protected(不加任何说明的缺省值)20、方法访问说明符有哪些?答:有public,protected,private,default。
21、关键字static可以修饰哪些类的组成部分?答:可以修饰属性、方法、静态初始化器。
22、什么是静态初始化器?静态初始化器与构造函数有什么不同?答:静态初始化器是由关键字static引导的一对大括号括起的语句组,其作用与类的构造函数有些相似,都是用来完成初始化的工作,但静态初始化器在三点上与构造函数有根本的不同:(1)构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。
(2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用执行。
(3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。
23、静态属性有什么特点?类对象可以访问或修改静态属性吗?答:静态属性是类的属性,不专属于某个方法,类对象可以访问或修改静态属性。
24、设某程序创建了类MyClassl的两个对象,试写出静态初始化器和构造函数执行的前后次序与次数。
答:先执行类MyClassl的静态初始化器一次,再执行构造函数两次。
25、抽象方法有什么特点?抽象方法的方法体在何处定义?答:抽象方法的特点是用abstract修饰符修饰,只有方法头没有具体的方法体。
抽象方法在定义该方法的抽象类的非抽象子类中定义。
26、final修饰符可以用来修饰什么?被final修饰符修饰后有何特点?答:final修饰符可用来修饰类、属性、方法和终结器。
被final修饰符修饰的类没有子类。
被final修饰符修饰的属性在程序整个执行过程中都不能改变。
被final修饰符修饰的方法是功能和内部语句不能更改的最终方法。
被final修饰符修饰的终结器(以称析构器——finalize()方法,是在对象被删除前进行收尾工作的方法)也是不能更改的。
27、哪些修饰符不能组合使用?答:abstract与private,abstract与final,abstract与static。
28、书写语句完成下面的功能。
(1)定义一个类,其名称为MyClass,类体为空,它可以被所有的其他类访问。
(2)将对象Objectl的属性fieldl在屏幕上显示出来。
答:(1)public class MyClass{}(2)System.out.print(Object1.field1);29、书写语句完成下面的功能。
(1)调用对象Objectl的方法methodl,把返回值赋值给变量Hold。
(2)定义一个整型属性Mine,使得只有这个类本身可以访问它。
答:(1) Hold=Object1.method1();(2) private int Mine;30、书写语句完成下面的功能。
(1)为类Classl定义一个整型变量field2,使得所有其他类都可以访问它。
(2)定义一个无形式参数无返回值的方法method2,使得使用类名Classl作前缀就可以调用它。
答:(1) public class Class1{public int field2;}(2) static void method2()31、书写语句完成下面的功能。
(1)为类Class2编写构造函数的方法头,该构造函数不接受形式参数。
(2)为类Class2编写构造函数的方法头,该构造函数接受两个整型形式参数。
答:(1) Class2()(2) Class2(int c1,int c2)32、书写语句完成下面的功能。
(1)创建类Classl的一个对象Objectl,定义这个类的一个引用Refl,把对象Objectl的引用赋给Ref1。
(2)为类Classl创建一个静态整型变量s_data。
答:(1) Class1 Object1=new Class1();Class1 Ref1=Object1;(2) static int s_data;33、Java中如何定义继承关系?写出定义类库中的类java.awt.Frame的子类MyFrame的类头的语句。
答:Java中是通过extends关键字定义继承关系的,其语句的一般格式是:class 子类extends 父类。
import java.awt.*;class MyFrame extends Frame34、设父类SuperClass中定义了公共整型属性SuperProperty,SuperClass 的子类SubClass中定义了公共整型属性SubProperty,则属性SubClass.SuperProperty是否存在?来自何处?答:存在,这个属性是从其父类那里继承来的。
35、什么是多重继承?Java是否支持多重继承?Java采取什么机制来替代多重继承?答:一个子类有多个父类的情况称为多重继承,Java不支持多重继承,Java 用实现接口的方法替代多重继承。