Java面向对象编程练习题

Java面向对象编程练习题
Java面向对象编程练习题

Java面向对象编程练习题

专题1 初识Java

一、填空题

1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是(SE)、( EE )、( ME )。

2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath 为()。

3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展名为()。

4.如果Java源文件中有多个类,那么只能有一个类是()类。

5.Java程序可以分成两类,即()和()。

二、选择题

1.作为Java应用程序入口的main方法,其声明格式是(B )

A.public static int main(String args[]) B.public static void main(String args[])

C.public void main(String args[]) D.public int main(String args[])

2.下面命令正确的是(B)

A.java B.java AppFirst

C.java D.javac AppFirst

3.设有一个Java小程序,源程序名为,其class文件为,则运行该小程序的命令为(B)

A.java FirstApplet B.javac C.appletviewer D.appletviewer

4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的(A)文件夹下。

A.bin B.jre C.include D.doc

5.Java语言是一种 D 语言。

A.机器B.汇编C.面向过程的D.面向对象的

6、Java程序的最基本组成单位是 D 。

A.函数B.过程C.变量D.类

三、简答题(十分重要)

1.Java语言有哪些特点

跨平台、一种简单、面向对象、分布式、半编译半解释、健壮、安全、多线程2.JDK安装完成后,如何设置环境变量

Path 配置:

1)我的电脑—属性—高级—环境变量—系统变量

2)新建变量名:path 变量值: jdk中bin的路径

配置 Class Path :

1)我的电脑—属性—高级—环境变量—系统变量

2)新建变量名:classpath 变量值: .;jdk中lib的路径;

3.简述Java应用程序和小应用程序的区别。

4.简述Java应用程序的开发过程

专题2 标识符、表达式、数据类型

一、填空题

1.Java逻辑常量有两个:(true )和( false)。

2.写出下列表达式的运算结果,设a=2,b=-4,c=true。

(1)-a%b++ -2

(2)a>=1 && a <= 10 a : b true

(3)c^(a>b) false

(4)(-a)<

(5)(double)(a+b)/5+a/b

3、比较两个数相等的运算符是: == 。

4、Java中的八种基本数据类型分别是:char、int 、 long 、 short 、boolean 、 float 、 double和 byte 。

二、选择题

1.下面这些标识符哪个是错误的(C)

A.Javaworld B._sum C.2Java Program D.$abc

2.下列哪一组运算符的优先级顺序是从高到低排列的(B)

A.|、&、! B.&、^、|| C.!、%、++ D.<、<<、++

3、下面哪个赋值语句不会产生编译错误(D )

A.char a=’abc’; B.byte b=152; C.float c=; D.double

d=;

4.下面哪个单词是Java语言的关键字(D)

A.False B.FOR C.For D.for

5.执行下面程序后,哪个结论是正确的(A )

int a, b, c;

a=1; b=3; c=(a+b>3 ++a : b++);

A.a的值为2,b的值为3,c的值为1 B.a的值为2,b的值为4,c的值为2

C.a的值为2,b的值为4,c的值为1 D.a的值为2,b的值为3,c的值为2

6.设各个变量的定义如下,哪些选项的值为true ( C)

int a=3, b=3;

boolean flag=true;

A.++a = = b B.++a= = b++ C.(++a = = b) || flag D.(++a= =b)

& flag

7.表达式(int)*3的值的类型为(B)

A.short B.int C.double D.float

8.设a, b, x, y, z均为int型变量,并已赋值,下列表达式的结果属于非逻辑

值的是(D)

A.x>y && bx-y C.y = = ++x D.y+x*x++

9.下面语句输出的结果为(B )

2); 7 C22 C3 C7 12 8 1 3 C12 C0 C1

C5 C16 C4 C5 C0’50 c30 c30 c30

c2 C0 C7 C6.求从1到100之间所有奇数的平方和(用for、while

和do……while编写程序)。

7.求S=1+2+3+…+n之和,S<1000的最大n的值。

8. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20

项之和。

9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少

10.输出九九乘法表。

11.输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,这个数就称为完数。

12.输出100以内的全部素数。

13.求1!+2!+3!+ (10)

14.求2+22+222+2222+22222。

专题4 数组

一、填空题

1.定义一个整型数组y,它有5个元素分别是1,2,3,4,5.用一个语句实现对数组y的声明、创建和赋值:()。

2.设有整型数组的定义:“int x[][]={{12,34},{-5},{3,2,6}};”则的值为()3.求取二维数组a[][]的第i行元素个数的表达式是()。

4、一个一维数组有10个元素,则该数组可用的下标范围是。

5、String S[]={“安徽”, “江苏”, “山东”};则S[1]的值是:。

6、当声明一个数据组int arr[]=new int[5];时,这代表这个数组所保存的变量类型是,数组元素下标的使用范围是。

二.选择题

1.设有定义语句“int a[]={66,88,99};”,则以下对此语句的叙述错误的是()A.定义了一个名为a的一维数组 B.a数组有3个元素

C.a数组的元素的下标为1~3 D.数组中的每个元素是整数

2.设有定义“int[] a=new int[4];”则数组a的所有元素是()

A.a0、a1、a2、a3 B.a[0]、a[1]、a[2]、a[3]

C.a[1]、a[2]、a[3]、a[4] D.a[0]、a[1]、a[2]、a[3]、a[4]

3.下面哪个选项正确地声明了一个字符串数组()

A.char[] str B.char[][] str C.String[] str D.String[10] str

4、假设有这样的数组创建:int a[]={1,2,3,4,5,6,7};则该数组长度为。A.4 B.5 C.6 D.7

5、下列二维数组的创建中错误的是。

A.int a[][]=new int[3][] ;

B.int[][] a=new int[3][4] ;

C.int a[][]={{1,2},{3,4}} ;

D.int [][] a=new int[][];

三、编程题

1.编写一个程序,计算一维数组中的最大值、最小值及其差值。

2.将一个数组中的数逆序重新存放。

3.已知数组(12,23,26,45,58,60)是有序的,输入一个数x,将它插入到数组中,保证数组仍然是有序的。

4.输出杨辉三角形。如:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

……

5.求一个二维数组的每行最大数。

**专题5 面向对象

一、填空题

1.如果一个方法不返回任何值,则该方法的返回值类型为。

2.如果子类中的某个方法名、返回值类型和_传递参数_______与父类中的某个方法完全一致,则称子类中的这个方法覆盖了父类的同名方法。

3.接口中所有的属性均为_公有__、__静态_____和_常量_____的

4.方法是一种仅有方法声明,没有具体方法体和操作实现的方法,该方法

必须在类之中定义。

5.在Java程序中,通过类的定义只能实现重继承,但通过的定义可以实现多重继承关系。

6.一般Java程序的类主体由两部分组成:一部分是,另一部分是。7.分别用关键字来定义类,用关键字来分配实例存储空间。

8.当一个类的修饰符为时,说明该类不能被继承,即不能有子类。

9.在Java中,能实现多重继承效果的方式是。

二、选择题

1.方法内定义的变量()。

A.一定在方法内所有位置可见 B.可能在方法的局部位置可见

C.在方法外可以使用 D.在方法外可见

2.方法的形参()。

A.可以没有B.至少有一个

C.必须定义多个形参D.只能是简单变量

3.return语句()。

A.不能用来返回对象B.只可以返回数值

C.方法都必须含有D.一个方法中可以有多个

4.main()方法的返回值类型是(。

A.boolean B.int

C.void D.static

5.编译并运行下面的程序,运行结果是()。

public class A{

public static void main(String args[]){

A a=new A();

(8);

}

void method(int i){

“int: ”+i);

}

void method(long i){

“long: ”+i);

}

A.程序可以编译运行,输出结果为:“int: 8”

B.程序可以编译运行,输出结果为:“long: 8”

C.程序有编译错误,因为两个method()方法必须定义为静态(static)的D.程序可以编译运行,但是没有输出

6.能作为类及其成员的修饰符是()。

A.interface B.class

C.protected D.public

7.下列方法定义中,方法头不正确的是()。

A.public static x(double a){…} B.public static int x(double y){…}

C.void x(double d){…} D.public int x(){…}

8.构造方法在()时被调用。

A.类定义时B.使用对象的变量时

C.调用对象方法时D.创建对象时

9.下列哪个类声明是正确的()。

A.public abstract class Car{…} B.abstract private move(){…} C.protected private number; D.abstract final class H1{…} 10.下列不属于面向对象程序设计的基本特征的是()。

A.抽象B.封装

C.继承D.多态

11.请看下面的程序段

class Person{

String name,department;

int age;

public Person(String n){name=n;}

public Person(String n,int a){name=n; age=a;}

public Person(String n, String d, int a ){

2 ....

}

A.B.

C.D.无解

34、在JAVA 中,下列说法正确的是:。

A.一个子类可以有多个父类,一个父类也可以有多个子类

B.一个子类可以有多个父类,但一个父类只可以有一个子类

C.一个子类只可以有一个父类,但一个父类可以有多个子类

D.上述说法都不对

35、Father和Son是两个java类,下列哪一选项正确的标识出Father是Son的父类

A.class Son implements Father B.class Father implements Son C.class Father extends Son D.class Son extends Father 36、重载指的是方法具有相同的名字,但这些方法的参数必须不同。下列哪种说法不属于方法参数的不同。

A.形式参数的个数不同。B.形式参数的类型不同。

C.形式参数的名字不同。D.形式参数类型的排列顺序不同。37、下列有关抽象类与接口的叙述中正确的是哪一个。

A.抽象类中必须有抽象方法,接口中也必须有抽象方法

B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法

C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法

D.抽象类中的变量定义时必须初始化,而接口中不是

38、从下列程序中你发现了几处错误。

abstract class A{

abstract void f(){};

public abstract void k();

}

class B extends A{

protected void f(){ }

void k(){

}

public static void main(String[] args) {

A a=new A();

();

();

}

}

A.1 B.2 C.3 D.4

39、关于接口的定义和实现,以下描述正确的是。

A.接口定义的方法只有定义没有实现

B.接口定义中的变量都必须写明final和static

C.如果一个接口由多个类来实现,则这些类在实现该接口中的方法时采用统一的代码

D.如果一个类实现接口,则必须实现该接口中的所有方法,但方法未必申明为public

三、阅读程序题

1、写出运行结果:。

public class Computer{

String mainbord,cpu;

public Computer(String s1,String s2){

mainbord=s1;

cpu=s2;

}

public static void main(String[]args){ Computer c=new Computer("华硕","Intel"); ,cpu:"+;

}

}

2、写出运行结果:。

public class ExamA {

private static int arr[] = new int[5];

public static void main(String args[]) {

for(int i=;i>=0;i--)

arr[i] = 2*i+1;

String output = "0";

int sum = 0;

for(int i=0;i<;i++){

sum += arr[i];

output += " + " + arr[i];

}

output += " = "+sum;

(0);

}

}

3、写出运行结果:。

public class Person{

String name;

int age;

public Person(String name,int age){

=name;

=age;

}

public static void main(String[]args){

Person c=new Person("Peter",17);

}

}

4、写出运行结果:。

public class abc{

public static void main(String args[ ]) {

SubSubClass x = new SubSubClass(10 , 20 , 30);

();

}

}

class SuperClass{

int a,b;

SuperClass(int aa , int bb){

a=aa; b=bb;

}

void show( ){

);

}

}

class SubClass extends SuperClass{ int c;

SubClass(int aa,int bb,int cc){

super(aa,bb);

c=cc;

}

}

class SubSubClass extends SubClass{ int a;

SubSubClass(int aa,int bb,int cc){ super(aa,bb,cc);

a=aa+bb+cc;

}

void show(){

);

}

}

5.下面是一个类的定义,请将其补充完整 class ______{

String name;

int age;

Student(______ name, int a){

=name;

age=a;

}

}

6.下面是一个类的定义,请将其补充完整 class ______{

String s;

______ int a=3;

A(String s){

=s;

}

static int getA(){

return a;

}

}

四、编程题

1.按要求编写一个Java应用程序:

(1)定义一个接口CanCry,描述会吼叫的方法public void cry()。

(2)分别定义狗类(Dog)和猫类(Cat),实现CanCry接口。实现方法的功能分别为:打印输出“我是狗,我的叫声是汪汪汪”、“我是猫,我的叫声是喵喵喵”。

(3)定义一个主类G,

①定义一个void makeCry(CanCry c)方法,其中让会吼叫的事物吼叫。

②在main方法中创建狗类对象(dog)、猫类对象(cat)、G类对象(g),用g调用makecry方法,让狗和猫吼叫。

2、编写一个Java程序,并满足如下要求:

1)编写一个Car类,具有:

属性:品牌(mark)——String类型

功能:驾驶(void drive( ))

2)定义Car类的子类SubCar,具有:

属性:价格(price)、速度(speed)——int型

功能:变速(void speedChange(int newSpeed)),把新速度赋给speed 3)定义主类E,在其main方法中创建SubCar类的两个对象:aodi和benchi 的对象并测试其对象的特性。

4)输出效果如下:

3.某公司正进行招聘工作,被招聘人员需要填写个人信息,编写“个人简历”的封装类。包括如下属性和对属性进行操作的方法。

String xm;// 姓名

String xb;// 性别

int nl;// 年龄

String jtzz;// 家庭住址

String xl;// 学历

4.编写程序,提供实现各种数学计算的方法。包括如下几项。

(1)两个数的加、减、乘、除。

(2)求某数的相反数、倒数、绝对值。

(3)取两数中较大的和较小的。

(4)对浮点数(double型)的计算功能。如:给定浮点数d,取大于或等于d 的最小整数,取小于或等于d的最大整数,计算最接近d的整数值,计算d的平方根、自然对数log(d)等。

(5)计算以double型数a为底数,b为指数的幂。

5.编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。

6.定义一个接口,接口中有3个抽象方法如下。

(1)“long fact(int m);”方法的功能为求参数的阶乘。

(2)“long intPower(int m,int n);”方法的功能为求参数m的n次方。

(3)“boolean findFactor(int m,int n);”方法的功能为判断参数m加上参数n的和是否大于100。

定义类实现该接口,编写应用程序,调用接口中的3个方法,并将调用方法所得的结果输出。

7.创建一个接口IShape,接口中有一个求取面积的抽象方法“public double area()”。定义一个正方形类Square,该类实现了IShape接口。Square类中有一个属性a表示正方形的边长,在构造方法中初始化该边长。定义一个主类,在主类中,创建Square类的实例对象,求该正方形对象的面积。

8.定义一个人类,包括属性:姓名、性别、年龄、国籍;包括方法:吃饭、睡觉,工作。

(1)根据人类,派生一个学生类,增加属性:学校、学号;重写工作方法(学生的工作是学习)。

(2)根据人类,派生一个工人类,增加属性:单位、工龄;重写工作方法(工人的工作是……自己想吧)。

(3)根据学生类,派生一个学生干部类,增加属性:职务;增加方法:开会。

(4)编写主函数分别对上述3类具体人物进行测试。

相关主题
相关文档
最新文档