Java语言程序设计(邵丽萍编著)第4章

第4章

(一)判断题

(1)所谓对象,就是一组类的集合。 ( ) (2)方法的声明和方法调用的形式一样。 ( ) (3)类是对一组具有相同属性、表现相同行为的对象的描述。 ( ) (4)类成员只有三种访问控制级别:公有(public)、受保护(protected)和私有(private)。 (5)Java语言中对象传递的是引用而不是值。 ( ) (6)所谓非静态的成员变量是指每一次创建对象都会分配一个存储空间来储存这个变量,每一个对象都拥有这个变量的存储空间,这个变量是属于类的,是类的变量。 ( ) (二)填空题

(1)面向对象的语言将客观世界都看成由各种对象所组成。具有共同特征和行为的对象组成类,类是变量和 的集合。

(2)在面向对象方法中,类的实例被称为 。 (3)在Java中,对象使用应遵循的原则是 。 (4)在Java中,类描述的是具有相同属性的 。 (5)在Java程序里,对象是类的一个 。

(6)在Java程序结构里,最基本的概念是类和 。

(7)引用static类型的方法时,可以使用 做前缀,也可以使用 做前缀。 (8)类中的 方法是一个特殊的方法,其名称与类名相同。 (9)一个类主要包含两个成员要素: 和 。

(10)静态数据成员既可以通过 来访问,也可以通过 来访问。

(11)Java是面向对象的语言,对象是客观事物的 ,对象与之是一一对应的。 (12)定义一个类包括定义类头和定义 两个部分。

(13)Java语言以 为程序的基本单位,它是具有某些共同特性实体的集合,是一种抽象的概念。

(14)把对象实例化可以生成多个对象,使用 运算符为对象分配内存空间。 (15)在Java中有一种叫做 特殊方法,在程序中用它来对类成员进行初始化。 (三)选择题

(1)下面关于类变量和实例变量的叙述中描述错误的是( )。 A.实例变量是类的成员变量

B.类变量第一次用到时被初始化,以后创建其他对象时就不再进行初始化 C.实例变量在每次创建对象时都被初始化 D.实例变量是用statiic修饰的成员变量

(2)下面( )修饰符可以使一个类中的成员变量能被外部类调用。 A.public B.protected C.private D.没有修饰符 (3)定义类中可以用来修饰类名的修饰符是( )。 A.private B.abstract C.native D.protected

(4)定义类头时,不可以放到类名前面的关键字是( )。 A.public B.abstract C.final D.static

(5)关于用关键字private修饰的成员变量,下列说法正确的是( )。 A.可以被其他包的类访问 B.只能被同一个包中的其他类访问

C.只能被该类自身所访问或修改 D.可以被其他包中的该类的子类访问 (6)下面关于类的说法中,错误的是( )。

A.类是经过抽象的共有属性的集合 B.类是Java程序的核心和本质

C.类是对象的模板,二类对象则是类的实例化结果

D.在面向对象的编程语言中,类不是一个独立的程序单位 (7)下面有关变量调用的语句正确的是( )。 Public class Number{ Int a=2; Float b=12; Static int c=13;

Public static void main(string args[]){ Number one=new Number();} }

A.one.a B.Number.a C.number.a D.Number.one

(8)设Test为已定义的类,下面声明类Test对象a的语句正确的是( )。

A.Test a=Test(); B.public Test a; C.Test a=new Test(); D.public Test a=new Test(); (9)下面( )不是对象的特征。

A.对象的行为 B.对象的状态 C.对象的局部变量 D.对象的标识符 (10)定义抽象类时所用到的关键字是( )。 A.final B.public C.abstract D.protected

(11)定义一个公有double型符号常量PI,下面的语句中正确的是( )。 A.public final double PI; B.public final static double PI=3.14159; C.public final static double PI; D.public static double PI=3.14159; (12)有一个类B,下面为其构造方法的声明,正确的是( )。 A.void B(int x){} B.B(int x){} C.void b(int x){} D.b(int x){}

(13)为B类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( )。

A.abstract void f() B.public void f() C.final void f() D.static void f() (四)问答题

(1)什么是类?什么是对象?

(2)什么是修饰符?修饰符的种类有哪些?各有什么用处? (3)如何定义方法?方法有哪些类型?

(4)何为局部变量?什么是局部变量的作用域? (5)类的访问控制修饰符有哪些? (6)如何实现数据的封装?

(7)方法的访问控制修饰符有哪些? (8)属性的访问控制修饰符有哪些? (9)this的意义与作用是什么?

(10)什么是递归算法?如何用递归方法来编程解决问题? (五)编程题

(1)定义一个实现常用数学运算的类MyMath,类中提供max()、min()、sum()与average()四个静态方法,每个方法带有三个整形参数,分别实现对三个整数求取最大值、最小值、和值及平均值的运算。在主类中对任意输入的三个整数,调用MyMath类的四种静态方法,求取结果并输出。

(2)定义student类,其中包括四个私有变量(name、age、sex、score)、一个构造方法和show()方法。各成员的含义如下。

变量name为字符串类型String,用于存储学生的姓名。

变量age为int类型,用于存储学生的年龄。

变量sex为boolean类型,用于存储学生的性别,男生为false,女生为true。 变量score为double类型,用于存储学生的成绩。

构造方法包括四个参数,用于为变量(name、age、sex和score)赋值。 Show()方法无参数,用于输出变量(name、age、sex和score)的值。

(3)有一对雌雄兔,每两个月就繁殖雌雄各一对兔子。问n个月后共有多少对兔子?试用递归方法编写Java程序。

(4)用递归方法编写Java程序求n个自然数的最大公约数与最小公倍数。

(5)编写程序解下面的问题:猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到第十天早上还想吃时,见只剩下一个桃子了,求第一天一共摘了多少?

(6)编写一个Application程序,程序中包括计算机类Computer,生成几个Computer类对象并输出相关信息。

Computer类具有品牌、产地、CPU类型、内存容量、硬盘大小、是否带有刻录光驱、购买日期、购买地点、价格等属性。

Computer类包括以下几类方法:

①对应于各个属性的get()方法与set()方法; ②多个构造方法;

③dispMessages()方法,该方法输出计算机对象的一些属性信息。

(7)构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。

(8)定义一个类A,类中有一个private的整型变量data,一个private的字符串对象str。类中有两个构造函数,一个不含参数,初始化data和str为其默认值;另一个有两个参数,分别用来初始化data和str。类中还定义了三个方法,方法的原型与功能分别如下。

①Public add(int k,String s);/该方法把data和str的值分别加上k和s。 ②Public clearA();//该方法把data和str的值分别清除为其默认值。

③Public String toString();//该方法把data和str的值转变为字符串返回。 编写应用程序测试类A,使用A中的三个方法并将结果输出。

(9)定义一个类,该类具有x和y两个属性,定义构造函数初始化这两个属性。类中还定义以下方法:求两个数的和(x+y)并返回结果的方法,求两个数的差(x-y)并返回结果的方法,求两个数的乘(x*y)并返回结果的方法,求两个数的商(x/y)并返回结果的方法,求两个数的余(x%y)并返回结果的方法,求两个数的最大值并返回结果的方法,求两个数的最小值并返回结果的方法。编写应用程序,测试上面定义的类,使用类中定义的各个方法并将其结果输出。

(10)定义一个复数类ComplexNumber,该类具有整数类型的两个属性a和b,分别代表一个复数的实部与虚部,对应于形如a+bi形式的复数表达。该类具有重载的多个构造方法,用来初始化两个属性。定义一个复数运算类ComNumOperations,该类具有复数类引用类型的两个属性complex1与complex2,还具有构造方法及对两个复数进行加、减、乘、除四类运算的成员方法。在主类中创建一些复数类的实例对象,利用ComNumOperations的运算方法求取这些复数的运算结果并输出。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4