JAVA各章习题及答案 下载本文

3.一个类主要包含两个要素: 数据成员 和 成员方法 。 4.创建包时需要使用关键字 package 。

5.类中的 构造 方法是一个特殊的方法,该方法的方法名和类名相同。

6.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个默认构造方法。这个方法没有 形式参数 ,也没有任何 具体语句 ,不能完成任何操作。

7.静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是 相同 (相同/不同)的数值。

8.静态数据成员既可以通过 对象名 来访问,也可以通过 类名 直接访问它。

9.定义常量时要用关键字 final ,同时需要说明常量的 数据类型 并指出常量的 具体值 。

10.方法体内定义变量时,变量前不能加 修饰符 ;局部变量在使用前必须 明确赋值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 默认 的值。

11.static方法中只能引用 static 类型的数据成员和 static 类型的成员方法;而非static类型的方法中既可以引用 static 类型的数据成员和成员方法,也可以引用非static 类型的数据成员和成员方法。

12.引用static类型的方法时,可以使用 类名 做前缀,也可以使用 对象名 做前缀。 13.当程序中需要引用java.awt.event包中的类时,导入该包中类的语句为 import java.awt.event.*。

14.定义类时需要 class 关键字,继承类时需要 extends 关键字,实现接口时需要关键字 implements 。 三、编程题

1.编一个程序,程序中包含以下内容: 一个圆类(Circle),包含:

属性:圆半径radius;常量:PI。

方法:构造方法;求面积方法area();求周长方法:perimeter()。 主类(X4_3_1),包含:

主方法main(),在主方法中创建圆类的对象c1和c2并初始化,c1的半径为100,c1的半径为200,然后分别显示两个圆的面积和周长。

【编程分析】按照要求创建Circle类,其中的半径可以定义为int类型,PI定义为final static double类型,求面积和周长的方法都应定义为double类型,在构造方法中对radius进行初始化。

【参考答案】

public class X4_3_1 {

public static void main(String[] args) { Circle c1 = new Circle(100); Circle c2 = new Circle(200);

System.out.println(\ System.out.println(\ } }

class Circle{ int radius; final static double PI=3.14;

21

Circle(int r){ radius = r; } double area(){ return PI*radius*radius; } double perimeter(){ return 2*PI*radius; } }

【运行结果】

c1.area() = 31400.0 c1.perimenter() = 628.0 c2.area() = 125600.0 c2.perimenter() = 1256.0 2.编一个程序,程序中包含以下内容:

一个学生类(Student),包含:

属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。

方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。

主类(X4_3_2),包含: 主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。

【编程分析】按照要求首先编写Student类,其中的属性和方法根据实际情况选择相应的类型和权限修饰符,要通过方法来修改年龄,因此s_Age属性应该为private类型,否则可以直接在主类中进行修改,就没有必要使用方法了。 【参考答案】

public class X4_3_2 {

public static void main(String[] args) {

Student s1 = new Student(101,\张三\男\ Student s2 = new Student(102,\李四\女\ System.out.println(\第1个学生的信息为:\ s1.showNo(); s1.showName(); s1.showSex(); s1.showAge();

System.out.println(\第2个学生的信息为:\ s2.showNo(); s2.showName(); s2.showSex(); s2.showAge();

System.out.println(\修改第1个学生的年龄:\ s1.modifyAge(24);

System.out.println(\第1个学生的年龄修改为:\ s1.showAge();

22

} }

class Student{ private int s_No; private String s_Name; private String s_Sex; private int s_Age; Student(int no, String name, String sex, int age){ s_No = no; s_Name = name; s_Sex = sex; s_Age = age; } void showNo(){ System.out.println(\学号:\ } void showName(){ System.out.println(\姓名:\ } void showSex(){ System.out.println(\性别:\ } void showAge(){ System.out.println(\年龄:\ } void modifyAge(int newAge){ s_Age = newAge; } }

第1个学生的信息为: 学号:101 姓名:张三 性别:男 年龄:18

第2个学生的信息为: 学号:102 姓名:李四 性别:女 年龄:16

修改第1个学生的年龄: 第1个学生的年龄修改为: 年龄:24

23

【运行结果】 第5章

一、选择题

1.已知有下面类的说明:

public class X5_1_1 extends x{ private float f =10.6f; int i=16; static int si=10;

public static void main(String[] args) { X5_1_1 x=new X5_1_1(); } }

在main()方法中,下面哪条语句的用法是正确的?( A ) A.x.f B.this.si C.X5_1_1.i D.X5_1_1.f

【解析】由于x是在main方法内部定义的对象,因此它可以引用类的非static类型的属性,因此选A,而this和super不能在main方法中使用,使用类名只能引用本类的静态属性,因此B、C、D不对。

2.下列程序的运行结果是( C )。

public class X5_1_2 extends x{

int ab(){ static int aa=10; aa++; System.out.println(aa); }

public static void main(String[] args) { X5_1_2 x=new X5_1_2(); x.ab(); } }

A.10 B.11 C.编译错误 D.运行成功,但不输出 【解析】方法体内的局部变量不能使用static修饰符。 3.下面关于接口的说法中不正确的是( C )。 A.接口中所有的方法都是抽象的

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法 【解析】子接口继承父接口所用的关键字也是extends,只有类实现接口时才使用implements。 4.区分类中重载方法的依据是( A )。 A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同 【解析】形参表的类型和顺序不同时区分重载方法的唯一标志。

5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( B ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 【解析】子类对象可以直接赋值给父类对象,而父类对象不能直接赋值给子类对象。 6.Java语言类间的继承关系是( A )。 A.单继承 B.多重继承 C.不能继承 D.不一定 【解析】Java语言类间的继承关系是单继承,但一个类可以实现多个接口。

24