作业说明:
1.做作业之前首先在封面填上自己的学号和姓名,做完作业后请写上作业完成时间。
2.学习完第3、4、5单元之后必须完成本次作业,并请在规定时间内通过学习平台提交Word文档形式的电子作业,本次作业占形成性考核总成绩的20%。
作业内容:
一、选择题(每题2分,共40分)
答案填写区:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
D |
A |
C |
B |
C |
C |
A |
C |
D |
B |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
A |
B |
A |
B |
B |
A |
A |
A |
A |
C |
1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( )
(A)protected(B)public(C)default(D)private
2.在Java语言中,哪一个包中的类是自动导入的?( )
A)java.lang B)java.awt C)java.io D)java.applet
3.给出下面的程序代码:
public class X3{
private float a;
public static void m ( ){ }
}
如何使成员变量a被方法m( )访问( )
(A)将private float a改为protected float a
(B)将private float a改为public float a
(C)将private float a改为static float a
(D)将private float a改为float a
4.有一个类B,下面为其构造方法的声明,正确的是( )。
(A)void B(int x) {} (B)B(int x) {}(C)b(int x) {} (D)void b(int x) {}
5.下面关于类的说法,不正确的是( )。
(A)类是同种对象的集合和抽象
(B)类属于Java语言中的复合数据类型
(C)类就是对象
(D)对象是Java语言中的基本结构单位
6.下面关于方法的说法,不正确的是( )。
(A)Java中的构造方法名必须和类名相同
(B)方法体是对方法的实现,包括变量声明和合法语句
(C)如果一个类定义了构造方法,也可以用该类的默认构造方法
(D)类的私有方法不能被其他类直接访问
7.关于内部类,下列说法不正确的是( )。
(A)内部类不能有自己的成员方法和成员变量
(B)内部类可用private或protected修饰符修饰
(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员
(D)除static内部类外,不能在类内声明static成员
8.定义外部类时不能用到的关键字是( )。
(A)final(B)public(C)protected(D)abstract
9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( )
(A)abstract void f()(B)public void f()(C)final void f()(D)static void f()
10.定义一个公有double型常量PI,哪一条语句最好?( )
(A)public final double PI; (B)public final static double PI=3.14;
(C)public final static double PI; (D)public static double PI=3.14;
11.区分类中重载方法的依据是( )。
A.形参列表的类型和顺序 B.不同的形参名称
C.返回值的类型不同 D.访问权限不同
12.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( )
A.能,能 B.能,不能 C.不能,能 D.不能,不能
13.Java语言类间的继承关系是( )。
A.单继承 B.多重继承 C.不能继承 D.不一定
14.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( )
A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量
C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分
15.下面说法不正确的是( )。
A.抽象类既可以做父类,也可以做子类
B.abstract和final能同时修饰一个类
C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口
D.声明为final类型的方法不能在其子类中重新定义
16.对应try和catch子句的排列方式,下列哪一项是正确的?( )
A.子类异常在前,父类异常在后
B.父类异常在前,子类异常在后
C.只能有子类异常
D.父类和子类不能同时出现在try语句块中
17.运行下面程序时,会产生什么异常?( )
public class A {
public static void main(String[] args) {
int x = 0;
int y = 5/x;
int[] z = {1,2,3,4};
int p = z[4];
}
}
A.ArithmeticException B.NumberFormatException
C.ArrayIndexOutOfBoundsException D.IOException
18.下列程序执行的结果是( )。
public class B {
public static void main(String[] args) {
try{
return;
}
finally{
System.out.println(“Finally”);
}
}
}
A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally
C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译
19.运行下面程序时,会产生什么异常?( )
public class C {
public static void main(String[] args) {
int[] z = {1,2,3,4};
int p = z[4];
int x = 0;
int y = 5/x;
}
}
A.ArithmeticException B.NumberFormatException
C.ArrayIndexOutOfBoundsException D.IOException
20.下列描述了Java语言通过面相对象的方法进行异常处理的好处,请选出不在这些好处范围之内的一项( )
A.把各种不同的异常事件进行分类,体现了良好的继承性
B.把错误处理代码从常规代码中分离出来
C.可以利用异常处理机制代替传统的控制流程
D.这种机制对具有动态运行特性的复杂程序提供了强有力的支持
二、编程题,写出程序源代码,并将实验结果附图(共60分)
1.编一个程序,程序中包含以下内容:(30分)
一个圆类(Circle),包含:
属性:圆半径radius;常量:PI。
方法:构造方法;求面积方法area();求周长方法:perimeter()。
主类(X4_3_1),包含:
主方法main(),在主方法中创建圆类的对象c1和c2并初始化,c1的半径为100,c1的半径为200,然后分别显示两个圆的面积和周长。
public class X4_3_1 {
public static void main(String[] args) {
Circle c1 = new Circle(100);
Circle c2 = new Circle(200);
System.out.println(“c1.area() = ” +c1.area()+”\tc1.perimenter() = “+c1.perimeter());
System.out.println(“c2.area() = ” +c2.area()+”\tc2.perimenter() = “+c2.perimeter());
}
}
class Circle{
int radius;
final static double PI=3.14;
Circle(int r){
radius = r;
}
double area(){
return PI*radius*radius;
}
double perimeter(){
return 2*PI*radius;
}
}
2.编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。最后编写一个主类X5_3_5,包含main()方法,在main()方法中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄。(30分)
public class X4_3_1 {
public static void main(String[] args) {
Circle c1 = new Circle(100);
Circle c2 = new Circle(200);
System.out.println(“c1.area() = ” +c1.area()+”\tc1.perimenter() = “+c1.perimeter());
System.out.println(“c2.area() = ” +c2.area()+”\tc2.perimenter() = “+c2.perimeter());
}
}
class Circle{
int radius;
final static double PI=3.14;
Circle(int r){
radius = r;
}
double area(){
return PI*radius*radius;
}
double perimeter(){
return 2*PI*radius;
}
}