jav语言程序设计方案B复习提要版本.docx
- 文档编号:28617095
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:21
- 大小:25.35KB
jav语言程序设计方案B复习提要版本.docx
《jav语言程序设计方案B复习提要版本.docx》由会员分享,可在线阅读,更多相关《jav语言程序设计方案B复习提要版本.docx(21页珍藏版)》请在冰豆网上搜索。
jav语言程序设计方案B复习提要版本
Java语言程序设计B
复习提要
1、类、对象的概念,类与对象的关系(P8)。
答:
类是同一种(具有相同属性和行为)对象的集合与抽象。
对象是现实中的具体实体。
2、面向对象的三大特征(P9)。
答:
抽象、封装、继承和多态。
3、封装、继承和多态的概念。
Java语言实现多态有哪三种方法(P9)?
⏹封装是将对象的属性和行为组合成为一个独立的单位或部件,并尽可能隐蔽对象的内部细节,而只保留必要的对外接口,使之与外部发生联系。
它是面向对象的重要原则。
⏹继承是指一个对象是对另一个对象的扩展,它除了包含被继承对象的已有属性的操作之外,还可以加入新的特性。
⏹多态性是指同一个消息可以根据发送对象的不同而产生不同的效果的行为方式。
利用多态性可以实现用相同的方法调用作用于不同类型的对象。
⏹实现多态的方法:
方法重写(方法覆盖)、方法重载、接口
4、JDK安装目录下,bin文件夹中的可执行文件javac.exe,java.exe,appletviewer.exe和javadoc.exe的作用(P19)。
答:
javac.exe:
Java语言编译器,它负责将Java源代码(以Java为扩展名)编译为字节码(以class为扩展名)
java.exe:
Java语言解释器,它负责执行Java字节码文件;
appletviewer.exe:
JavaApplet小程序查看器。
javadoc.exe:
Java语言文档生成器,将源程序文档中的注释取成html格式文件。
5、Java程序的分类(P21)。
答:
应用程序(Application),它类似与以往用其它高级语言开发的程序,可以在本机上开发,也可以在本机运行,它的执行入口点中main()方法。
另一类是小型应用程序Applet,它需要通过浏览器下载运行,其中没有main()方法。
6、Java的基本类型包含了哪8种,字符使用什么编码形式(P47-48)?
答:
整数型、浮点型、布尔型与字符型四类八种。
其中数值型6种分别为整数类型int类型4个字节,short类型2个字节,long类型8个字节,byte类型1个字节。
浮点类型中float类型4个字节,dpuble类型8个字节。
字符编码使用Unocode编码体系,双字节。
7、一个浮点常量没有使用表示类型的后缀字母f或d,则该浮点常量的类型是那种(P50)?
答:
整形默认类型为int类型,浮点类型默认类型为double类型。
加E表示指数方式,加F表示单精度float,加D表示双精度double。
在E的前面至少要有一位数字。
8、字符串的连接运算符是哪个(P51)?
答:
使用“+”符号实现两个字符串的连接。
”How”+”areyou”表示”Howareyou”
9、Java语言中的布尔常量只有两个,写出它们的常量表示形式(P51)。
答:
true与false。
只能是其中的一个。
10、对象运算符是:
instanceof,它有何用途(P58)?
答:
它用于测定一个对象是否属于某个指定类或指定类的子类的实例,它是一个双目运算符,左边的表达式是一个对象,右边的表达式是一个类,如果左边的对象是右边的类创建的对象,则运算结果为true,否则为flase。
11、Java中的常用数学函数定义在那个类中,这些函数都用public和static修饰,可以直接用类名来调用,写出调用的一般形式(P68)。
答:
常用的数学函数在Math类中。
其一般的形式如下:
importjava.lang.math.*,一般可以直接引用类中的方法。
Math.sin(Math.PI/4),Math.sqrt(XXXX),Math.pow(aInt,bInt)等,参考API文档。
12、习题:
3.1,3.3,3.7,3.9(P72-73)
//第3章习题1
非法变量名称:
A=bbyte3ABC‘abc’-0xab4-3elk*j
//第3章习题3,程序名:
X03_03_Switch.java
publicclasstest{
publicstaticvoidmain(Stringargs[]){
intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
System.out.println("a="+a+"\tb="+b);
}
}运行的结果是:
a=2b=1注意题目中的控制位置有两处,最终输出的时候重新修改了.
第3章习题3.7,计算100(含100)以内的所有偶数的和、所有奇数的和。
程序名:
X03_07_OuJiSum.java
publicclassX03_07_OuJiSum{
publicstaticvoidmain(String[]args){
intk,sumOu=0,sumJi=0;
for(k=1;k<=100;k++){
if(k%2!
=0){
sumJi+=k;
System.out.print("奇数:
"+k);
}else{
sumOu+=k;
System.out.println("\t\t偶数:
"+k);
}
}
System.out.println("100以内所有奇数的和="+sumJi+"\t\t所有偶数的和="+sumOu);
}
}
//第3章习题9,用while循环语句写程序求e的值,要求直到最后一项的值小于10-4。
程序名:
X03_09_CalculateE.java
publicclassX03_09_CalculateE{
publicstaticvoidmain(String[]args){
intn=1;
finaldoubleE1=0.0001;
doublesumE=1.0,temp=1.0;
temp=1/fct(n);
while(temp>=E1){
sumE+=temp;
n++;
temp=1.0/fct(n);
}
System.out.println("n="+(n-1)+",sumE="+sumE);
}
staticlongfct(intn){//计算n!
longJieCheng=1;
for(intk=1;k<=n;k++){
JieCheng*=k;
}
returnJieCheng;
}
}
13、Java中数组声明和数组创建的含义相同吗?
指出下面语句的作用(P76):
声明数组可以使用intstudent[]或int[]student;声明数组只是给出了一个数组的名称的数据的类型,要使用数组还要为数组分配内存空间。
如下格式:
intstudent[];//声明数组
student=newstudent[50];//为数组分配内存空间
14、数组被初始化后,如果想知道这个数组的元素个数,要使用数组的哪个属性(P77)?
答:
使用length属性确定。
15、Java二维数组允许各行有不同的元素个数吗(P80)?
答:
可以。
Java的数组定义方式与其它语言不同。
它是按一维建立相应的二维,并以此类推。
16、Java中使用那个类创建字符串常量,使用那个类创建字符串变量(P88)?
答:
String类,声明常量格式stringName=字符串常量;如:
str=newString(“Java程序设计”)或str=”Java程序设计”
17、习题:
4.4,4.6(P104)。
//第4章习题2,程序名:
X04_04_ArrayCoverse.java
publicclassX04_04_ArrayCoverse{
publicstaticvoidmain(String[]args){
intiArray[]={9,5,7,4,8},temp,count;
count=iArray.length;
System.out.println("数组原有数据:
");
for(intk=0;k System.out.print(iArray[k]+"\t"); } System.out.println(); for(intk=0;k temp=iArray[k]; iArray[k]=iArray[count-k-1]; iArray[count-k-1]=temp; } System.out.println("逆序重置后的数组数据: "); for(intk=0;k System.out.print(iArray[k]+"\t"); } System.out.println(); } } //第4章习题6,程序名: X04_06_CharCount.java importjavax.swing.JOptionPane; publicclassX04_06_CharCount{ publicstaticvoidmain(String[]args){ intcount=0,k=0,spaceV=0,charV=0,numberV=0; Stringstr; charcArr[]; str=JOptionPane.showInputDialog("请输入一个字符串: "); cArr=str.toCharArray(); count=cArr.length; for(k=0;k if(''==cArr[k]) spaceV++;//统计空格个数 elseif(cArr[k]>'@'&&cArr[k]<'['|cArr[k]>'\''&&cArr[k]<'{') charV++;//统计字母A~Z和a~z的个数 elseif(cArr[k]>'/'&&cArr[k]<': ') numberV++;//统计数字的个数 } System.out.println("输入的字符串是: "+str+",\t字符串长度是: "+str.length()); System.out.println("字母的个数: "+charV+",\t空格的个数: "+spaceV+",\t数字的个数: "+numberV); } } 18、类声明时,类的访问权限修饰符有哪两种情况? 如果在类说明中无extends,则隐含地假设其父类是哪个类(P107)? 答: (1)类定义修饰符说明类的性质和访问权限,包括public、默认修饰符、abstract、final。 (2)extends说明类的父类,一般形式为extends<父类名>,在Java中如果说明extends,则隐含假设其父类为Java.lang.object。 19、类中所定义的变量和方法都是类的成员。 为类的成员定义一定的访问权限,限定其它对象对它的访问。 访问权限有哪4种? 分别具有什么样的访问权限(P108)? 答: (1)public说明的变量是公有变量,其访问权限是允许任何程序包中的类访问,其作用域最广。 (2)private说明的变量是私有变量,其访问权限只能是被定义它的类中的方法访问。 (3)protected是保护变量,其访问权限只能中类本身,子类及在同一个包中的所有类的变量访问。 (4)默认修饰符: 也称隐含修饰符,它不属于Java的关键字,其作用是控制变量的访问权限,如果一个变量没有显式说明访问权限,则表示使用默认的修饰符,它允许类本身用在同一个包中的类的变量访问。 20、对类的成员来说,可分为实例成员和类成员,如何区分(P108)? 答: 用static说明的变量是一个静态变量,也称类变量。 无static说明的变量为实例变量。 它们之间的区别是: 实例变量必须通过类的对象访问,每个对象都有这些变量的备份;而静态变量则独立于该类中的任何对象,它在类中只有一个备份,可以不通过类的对象直接使用,它一直属于定义它的类。 21、说明修饰符: final、static、abstract和synchronized的作用(P109)? 答: (1)final说明该方法为最终方法,指该方法不能被其所在类的子类重载,只能继承,不能重写。 (2)static说明该方法为静态方法,也称为类方法,在使用该方法时不需要初始化该方法所在的类。 此方法也不能被其它方法重载。 (3)abstract说明该方法是抽象方法,该方法只有说明,没有方法体,方法在所在类的子类中被具体实现。 (4)synchronized说明是同步方法,主要用于多线程程序设计,用于保证在同一时刻只有一个线程访问该方法。 它是实现资源之间协商共享的保证方式。 22、构造方法有返回值吗? 构造方法可以从父类中继承吗? 一个类可以有多个构造方法吗? 可以直接通过方法名调用构造方法吗(P110)? 答: 构造方法主要用于为类的方法中的变量赋初值,当使用new创建一个类的新对象的时候,构造方法就立刻执行。 它必须与类名相同。 (1)它没有返回值类型,没有void,其修饰符只能是文章控制修饰符public、private或protected其中之一。 (2)它不能从父类中继承。 (3)可以重载,一个类可以有任意多个构造方法,不同的对象根据参数的不同状态选择合适的构造方法。 (4)它不能通过方法名直接引用,必须通过new运算符。 (5)可以调用当前类和其父类的另一个构造方法,但必须是方法体的第一个语句。 23、什么是方法重载? 说明例5.5中方法重载情况,分析运行结果(P114)。 答: 在Java类中可以创建名字相同,但参数和返回值不同的多个方法,这就是方法重载(overloading)。 Java系统通过参数和返回值来区分具体是哪个方法。 通过方法重载,一个类中可以有多个名字相同的方法,通过对其传递的不同参数调用特定的方法,这就是多态。 24、什么是变量隐藏? 什么是方法覆盖? 说明例5.8中变量隐藏和方法覆盖情况,分析运行结果。 答: 子类继承父类后,如果出现子类的成员变量与父类的成员变量相同,则子类将父类的成员变量隐藏起来,在此情况下,子类使用的变量是它自己的变量,而不是父类的成员变量。 //例5.8,成员变量隐藏和方法覆盖应用举例。 程序名L05_08_SuperUse.java classSuperclass{ intx; Superclass(){ x=3; System.out.println("inSuperclass: x="+x); } voiddosomething(){ System.out.println("inSuperclass.dosomething()"); } } classSubclassextendsSuperclass{ intx; Subclass(){ super(); x=5; System.out.println("inSubclass: x="+x); } voiddosomething(){ super.dosomething(); System.out.println("inSubclass.dosomething()"); System.out.println("super.x="+super.x+"\tsub.x="+x); } } publicclassL05_08_SuperUse{ publicstaticvoidmain(String[]args){ SubclassSubc=newSubclass(); Subc.dosomething(); } } 25、什么情况下使用super和this(P119)? 答: 子类继承父类之后,如果成员变量与父类相同。 则父类的变量被隐藏,如果子类要调用父类的变量则需要使用super。 (1)用来访问父类中被覆盖的方法; (2)用来访问父类中的构造方法; (3)用来访问父类中被隐藏的成员变量。 This是Java的关键字,它表示每个实例对象指向自己的引用,一般只能用于在实例方法或构造方法中,不能出现在类方法中。 26、Java中一个类的父类只能有一个吗? 一个接口的父接口也只能有一个吗? 答: 通过继承方式只能有一个父类,但通过接口方式可以有多个父类。 27、在一个Java源程序文件(.java)中可以定义一个类,也可以定义多个类,若定义多个类,其访问权限为public的类能有几个? 编译后的字节码文件(.class)有几个? 答: 可以定义多个类,对于使用访问权限为public的类没有限制,生成的class文件数量与其相同。 28、习题: 5.6、5.9、5.15、5.16(P141) //第5章习题15,程序名: X05_15_Student.java classX05_15_Student{ privateStringsname; privateintsbirthday; privateStringsclass; X05_15_Student(){ } X05_15_Student(Stringname,intbirthday,Stringclass1){ sname=name; sbirthday=birthday; sclass=class1; } voidsetname(Stringname){ sname=name; } Stringgetname(){ returnsname; } voidsetbirthday(intbirthday){ sbirthday=birthday; } intgetbirthday(){ returnsbirthday; } voidsetclass(Stringclass1){ sclass=class1; } Stringgetclass(){ returnsclass; } voidprint(){ System.out.println("sname="+sname+"sbirthday="+sbirthday +"sclass="+sclass); } classCollegeStudentextendsX05_15_Student{ voidsetbirthday(intbirthday){ if(birthday>=17&&birthday<=30) sbirthday=birthday; else System.out.println("Notacollegestudent! "); } } } //第5章习题16,程序名: X05_16_AbstractUse.java abstractclassShape{ abstractdoubleArea(); abstractdoublePerimeter(); } classRectangleextendsShape{ privatedoublelength; privatedoublewidth; Rectangle(doublel,doublew){ length=l; width=w; } doubleArea(){ returnlength*width; } doublePerimeter(){ return2*(length+width); } voidPrint(){ System.out.println("Rectangle: length="+length+","+"width=" +width+",Area="+Area()+";Perimeter="+Perimeter()); } } classCircleextendsShape{ privatedoubleradius; Circle(doubler){ radius=r; } doubleArea(){ returnMath.PI*radius*radius; } doublePerimeter(){ return2*Math.PI*radius; } voidPrint(){ System.out.println("Circle: radius="+radius+",Area="+Area() +";Perimeter="+Perimeter()); } } publicclassX05_16_AbstractUse{ publicstaticvoidmain(Stringargs[]){ CircleaCircle=newCircle(4); RectangleaRect=newRectangle(5,12); aCircle.Print(); aRect.Print(); } } 29、什么是异常? 什么是抛出异常? 什么是捕获异常(P144)? 答: 异常是指程序在某些运行情况下,会使当前正在执行的方法或代码块无法继续运行的问题,普通的问题在编码时可以得到足够的信息来处理普通问题。 但当异常发生时,由于无法获得足够的信息,因此只能选择跳出当前的运行代码,或者将问题交给上层代码去处理,这就是异常抛出。 当Java系统运行时得到一个异常对象时,它会沿着方法的调用栈依次回溯,寻找处理这个异常的代码,找到能够处理这类异常的方法后,运行时系统将当前的对象交给这个方法处理,这个过程就是捕获异常。 30、(P145)根据程序对错误与异常的处理方式,可以将Java中的异常分为哪3类? 答: (1)Error类: 指系统级的错误,无法解决。 (2)RuntimeException类: 可以避免,一般不会影响系统的运行,可以不处理。 (3)Exception类: 程序运行中必须捕获的异常,使用try……catch….方法。 31、使用什么语句捕获并处理异常? 使用什么语句人为抛出异常? 使用什么子句声明方法抛出异常(149-150)? 答: try-catch-finally语句用于捕获并处理异常。 32、习题: 6.10(P157) 答: 33、习题: 7.3(P174) 答: Applet执行的方法主要为: init()、start()、stop()、destroy()和paint()。 它们的执行过程取决于程序设计人员。 34、容器(Container)类包含了Panel、Window、Frame和Dialog等子类,其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jav 语言程序设计 方案 复习 提要 版本