中山大学Java程序设计秋复习题.docx
- 文档编号:23678001
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:12
- 大小:23.26KB
中山大学Java程序设计秋复习题.docx
《中山大学Java程序设计秋复习题.docx》由会员分享,可在线阅读,更多相关《中山大学Java程序设计秋复习题.docx(12页珍藏版)》请在冰豆网上搜索。
中山大学Java程序设计秋复习题
Caution:
一.1以下哪条语句可以通过编译?
(b)
A.String#name="JaneDoe";B.int$age=24;
C.Double_height="123.5";D.double~temp=37.5;
一.2下列关于Java类的构造方法的说法中错误的是:
d
A.构造方法的名字必须与类的名字完全相同。
B.构造方法没有返回值也不能用void修饰。
C.父类的构造方法不能被子类继承。
D.构造方法必须用public访问控制符修饰。
一.3给出如下代码:
b
classTest{
privateintm;
publicstaticvoidfun(){/*somecode...*/}
}
如何使成员变量m被函数fun()直接访问?
A.将privateintm改为protectedintm
B.将privateintm改为publicintm
C.将privateintm改为staticintm
D.将privateintm改为intm
一.4下面哪个函数是publicvoidexample(){...}的重载函数?
b
A.publicvoidexample(){...}
B.publicintexample(){...}
C.publicvoidexample2(){...}
D.publicintexample(intm,floatf){...}
一.5在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序的特性称为(c)。
A.隐藏B.覆盖
C.重载D.Java不支持此特性
以下程序的输出结果是()
publicclassTest{
publicstaticvoidmain(String[]args){
intx=5;
booleanb1=true;
booleanb2=false;
if((x==4)&&!
b2)
System.out.print("l");
System.out.print("2");
if((b2=true)&&b1)//若是改成if((b2==true)&&b1)则只输出2
System.out.print("3");
}
}
A.2B.3
C.12D.23
一.6关于异常处理下列说法中正确的是:
B
A.Java系统中所有异常都需要捕获处理。
B.catch子句是通过类型匹配来捕获异常对象的。
C.try-catch-finally结构处理完异常后结束程序的运行。
D.异常是一种错误,所以在程序中应该完全避免异常的出现。
一.7下列关于对象类型转换的说法中正确的是:
A.某类的对象引用只能指向它的直接子类的对象。
B.不存在祖先与后代关系的两个类的对象之间一定不能进行类型转换。
C.后代类的对象引用能指向其祖先类的对象。
D.对象类型转换只有强制转换而没有自动转换。
一.8类Teacher和Student是类Person的子类,则B
Personp;Teachert;Students;//设p,t和s都是非null引用
if(tinstanceofPerson)
s=(Student)t;
关于最后一条语句的正确说法是:
A.将构造一个Student对象。
B.类型转换正确。
C.表达式是错误的。
D.编译时正确,但运行时错误。
一.9根据下面代码,找出正确的选项。
D
publicclassTest{
staticObjecto;
publicstaticvoidmain(Stringargs[]){
System.out.println(o);
}
}
A.编译时将产生错误。
B.编译时正确,运行时将产生错误。
C.程序输出零。
D.程序输出null。
关于类Foo的以下说法中正确的是()
A
classFoo{
staticvoidalpha(){/*morecodehere*/}
voidbeta(){/*morecodehere*/}
}
A.在alpha()中可以直接调用beta();
B.在beta()中可以直接调用alpha();
C.在其中任一个方法中均可以直接调用另一个方法
D.在其中任一个方法中均不可以直接调用另一个方法
一.10关于下面数组定义的正确说法是?
D
String[][]s=newString[10][];
A.数组s定义不合语法B.s是10×10的2维数组
C.s数组的所有元素都是""D.s是10个数组的数组
一.11下列程序的正确输出是。
A
publicstaticvoidmain(String[]args){
Scannerscanner=newScanner("thisisonethatistwo");
scanner.useDelimiter("is");
while(scanner.hasNext()){
System.out.print(scanner.next());
}
}
A.thisonethattwoB.thonethattwo
C.thonethattwoD.thisisonethatistwo
改错题(20分)
说明:
写出每段代码的错误原因并改正错误,每小题4分,说明原因和改正各2分。
1.classFirst{}
importjava.io.*;
packagemypackage;
classSecond{}
2.classA{
Stringname;
publicA(Strings){
name=s;
}
}
classBextendsA{
intid;
publicB(inti){
id=i;
}
}
3.publicclassBextendsA{
finalvoidincrease(){
value+=2;
}
}
classA{
intvalue=0;
finalvoidincrease(){
value+=1;
}
}
一、程序阅读题(20分)
说明:
阅读下面程序并写出它们的输出结果,每小题5分。
1.程序如下:
classBase{
publicBase(){
System.out.println("Whatapleasure!
");
}
publicBase(Strings){
this();//调用上面的publicBase()?
?
?
System.out.println("Iam"+s+"!
");
}
}
publicclassChildextendsBase{
publicstaticvoidmain(Stringargs[]){
Childt=newChild("Mike");
}
publicChild(Strings){
super(s);
System.out.println("Howdoyoudo?
");
}
publicChild(){
this("IamTom");
}
}
E:
\shiyan\others>java
Whatapleasure!
IamMike!
Howdoyoudo?
2.程序如下:
classDivTest{
publicstaticvoidmain(String[]args){
intr,n,d;
n=10;d=0;
try{
r=n/d;
System.out.println("r="+r);
}catch(ArithmeticExceptione){
System.out.println("发生除数为0的异常!
");
}finally{
System.out.println("除法运算完毕!
");
}
System.out.println("程序运行结束!
");
}
}
二、应用设计题(6分)
下面是某公司人事管理系统进行分析过程中发现的部分类,请找出它们之间的关系,用UML的类图描述:
雇员、固定雇员、临时雇员、经理、促销员(临时)
三、程序设计题(24分)
说明:
按照题目要求编写下面两段程序。
1.编写一个完整的JavaApplication程序。
包含类Person、Student、TestStudent,具体要求如下:
(14分)
⑴ 类Person:
① 属性
name:
String对象,表示一个人姓名
sex:
char类型,用来表示性别
id:
String对象,表示身份证号
phone:
String对象,表示联系电话
email:
String对象,表示E-mail地址
② 方法
Person(Stringname,charsex,Stringid):
构造函数
StringgetId():
获取身份证号
voidsetEmail(Stringemail):
设置E-mail地址
voidsetPhone(Stringphone):
设置联系电话
StringtoString():
返回个人的各项信息,包括姓名、性别等上述属性
⑵ 类Student:
从Person类派生,增加了以下属性和方法:
① 属性
sNo:
long类型,表示学生的学号
sClass:
String对象,表示学生的班级
② 方法
Student(longsNo,Stringname,charsex,Stringid):
构造函数
setClass(StringsClass):
设置学生的班级信息
StringtoString():
返回学生的各项信息,包括学号、班级、姓名等上述属性
⑶ 类TestStudent作为主类要完成测试功能
① 用以下信息生成一个Student对象aStudent
姓名:
杨过
性别:
男
身份证号:
22033198807070333
学号:
2004002
② 设置E-mail:
yangguo@
设置联系电话:
88078549
③ 输出对象aStudent的各项信息
publicclasstestStudent{
publicstaticvoidmain(String[]x){
Studentastudent=newStudent(2004002,"杨过",'男',"22033198807070333");
astudent.setEmail("yangguo@");
astudent.setphone("88078549");
Stringinfo=astudent.toString();
System.out.println(info);
}
}
/*********************************/
classPerson{
Stringname;
charsex;
Stringid;
Stringphone;
Stringemail;
Person(Stringname,charsex,Stringid){
this.name=name;
this.sex=sex;
this.id=id;
}
publicStringgetID(){
returnid;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
publicvoidsetphone(Stringphone){
this.phone=phone;
}
publicStringtoString(){
return"这个人的信息:
\n"+name+","+sex+","+id+","+phone+","+email;
}
}
/************************************/
classStudentextendsPerson{
longsNO;
StringsClass;
publicStudent(longsNo,Stringname,charsex,Stringid){
super(name,sex,id);//注意这里
this.sNO=sNO;
}
publicvoidsetClass(StringsClass){
this.sClass=sClass;
}
publicStringtoString(){
return"这个学生的信息:
\n\n姓名"+name+"\n性别"+sex+"\n身份证"+id+"\n电话号码"+phone+"\n邮箱"+email;
}
}
求多个圆形面积之和。
(10分)
具体要求如下:
⑴定义一个名为Shape的接口,其中声明一个返回值为double的无参方法getArea()。
⑵定义一个圆形(Circle)类实现上面的Shape接口,有一个double类型的属性半径(radius)和两个构造方法。
其中,一个无参构造方法设置半径为0,另外一个有参构造方法根据参数设置半径,如果参数小于0则强制设置为0。
⑶编写一个类Test,在里面编写main方法,将数组{"12","123","1ab",""}中的值转换为double类型作为半径,创建相应个数的圆。
在类型转换的过程中需作相应的异常处理,如果转换出错,提示并使用无参构造方法创建圆。
最后计算所有圆的面积之和并输出。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中山大学 Java 程序设计 复习题