《Java面向对象》复习题

更新时间:2023-10-03 05:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java面向对象编程 练习题

专题1 初识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 AppFirst.java C.java appfirst.class

B.java AppFirst D.javac AppFirst

3.设有一个Java小程序,源程序名为FirstApplet.java,其HTML文件为FirstApplet.html,则运行该小程序的命令为(D) A.java FirstApplet

C.appletviewer FirstApplet.java 下。 A.bin A.机器 A.函数

二、简答题

1.Java语言有哪些特点?

2.JDK安装完成后,如何设置环境变量? 3.简述Java应用程序和小应用程序的区别。 4.简述Java应用程序的开发过程

B.jre B.汇编 B.过程

C.include C.面向过程的 C.变量

D.doc D.面向对象的 D.类

5.Java语言是一种 (D)语言。 6、Java程序的最基本组成单位是(D)。

B.javac FirstApplet.java D.appletviewer FirstApplet.html

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

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

1.Java逻辑常量有两个:(ture )和(flase )。 2.写出下列表达式的运算结果,设a=2,b=-4,c=true。 (1)-a%b++ (2)a>=1 && a <= 10 ? a : b (3)c^(a>b) (4)(-a)<

-2 2 false -8 -0.4

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

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

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

1.下面这些标识符哪个是错误的(C ) A.Javaworld A.|、&、!

B._sum B.&、^、||

C.2Java Program D.$abc C.!、%、++ C.float c=2.0; C.For

D.<、<<、++ D.double d=2.0; D.for

2.下列哪一组运算符的优先级顺序是从高到低排列的( B) 3、下面哪个赋值语句不会产生编译错误( C) A.char a=?abc?; B.byte b=152; A.False

B.FOR

4.下面哪个单词是Java语言的关键字(D ) 5.执行下面程序后,哪个结论是正确的( D) 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)6.5/7.5*3的值的类型为(C )

A.short B.int C.double D.float 8.设a, b, x, y, z均为int型变量,并已赋值,下列表达式的结果属于非逻辑值的是( D) A.x>y && b

B.-z>x-y

C.y == ++x D.y+x*x++

9.下面语句输出的结果为( B) Syste.out.println(5^2); A.6 int c=?c?/3; System.out.println(c); A.输出结果为21 C.输出结果为32 A.a = int(y); int x=3, y=4; boolean ch;

ch=x

B.true,4,3 B、$_Money

C.false,3,4 C、$-money

D.false,4,3 D、2-Forward

13.下列标识符中,正确的是 (B) 。

14.现有一个int类型的整数和一个double类型的浮点数,当它们之间做了加法运算之后,得到的结果类型应该是 ( B ) 。 A、int类型 C、float类型

B、double类型 D、long类型

B.a==1;

B.输出结果为22 D.输出结果为33

C.a = a+1=3; D.++a;

B.7

C.10

D.25

10.对下面的语句执行完后正确的说法是:( D)

11.以下选项中变量a已定义类型,合法的赋值语句为( D) 12.执行下列程序段后,ch,x,y的值正确的是:( A)

15、以下程序的运行结果为 ( A )。

public class A {

public static void main(String a[]) { int x = 2, y = 5; String z = \ System.out.println(x + y); System.out.println(x + z + \ System.out.println(\ + x + y); System.out.println(\ + (x + z)); }

} A.7 B.7 C.25 D.7 25x+z 7x+z x+y=25 x+z=25

x+y=25 x+z=7

25x+z x+y=7 x+z=25

25x+z x+y=25 x+z=7

16、设有定义int a=12;则执行a*=12;语句后,a的值为: ( A ) 。 A.144 B.12 C.24 17、下列标识符中,合法的一个是 ( C )。 A.$#@!$ B.$我们$

C.$22$

18、执行下列程序段后,b, x, y的值分别是(B)。

int x=6,y=8; boolean b; b=x>y&&++x==--y; A.true , 6, 8 B.false , 6, 8 C.e, 7, 7

D.false, 7, 7 19、下列程序运行的结果是 ( D ) 。

public class A { public static void main(String args[]) { int x = 7%3; while(x){ x--;

}

System.out.println(x);

}

} A.0

B.1

C.true

D.0 D.2$$2

D.编译错误

专题3 流程控制语句 一、填空题

1.在switch语句中的表达式的类型必须是( int型 )或者( Boolean )。 2.break在循环语句中的作用是(跳出整个循环 )。 3.分支语句包括( 双重分支)和( 多重分支)。

4.while循环语句的循环次数(不限 ),do-while语句的循环次数(次 ),for语句的循环次数(不限 )。

二、选择题

1.下面程序片段输出的是什么( C) int a=3, b=1;

if(a=b) Syste.out.println(“a=”+a); A.a=1

B.a=3

C.编译错误,没有输出 D.正常运行,但没有输出

2.下面语句执行后,x的值为(C ) int a=4, b=5, x=3; if(++a==b) x=x*a; A.3

B.12

C.15

D.20

3.请看下面的程序代码:

if(x<0) {Syste.out.println(“first”);}

else if(x<20) {Syste.out.println(“second”);} else {Syste.out.println(“third”);} 当程序输出“second”时,x的范围是(B) A.x<=0 B.x<20 && x>=0 C.x>0

D.x>=20

4.请看下面的程序代码:

switch(n){

case 0: Syste.out.println(“first”); case 1:

case 2: Syste.out.println(“second”); break;

至少一

C.受保护(protected)的方法 D.以上都不对

28、下列有关抽象类与接口的叙述中正确的是哪一个(C)。 A.抽象类中必须有抽象方法,接口中也必须有抽象方法 B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法 C.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法 D.抽象类中的变量定义时必须初始化,而接口中不是 29、从下列程序中你发现了几处错误(C)。 abstract class A{

abstract void f(){}; public abstract void k();

}

class B extends A{ protected void f(){} void k(){

System.out.print(\ am }

public static void main(String[] args) {

A a=new A();

a.f(); a.k(); }

} A.1

B.2

C.3

30、下列程序运行的结果是(A)。

interface InterfaceA{ String s=\; void f();

}

class ClassA implements InterfaceA{ public void f(){ System.out.print(s);

}

}

class ClassB{ void g(InterfaceA a){ a.f();

}

subclass\D.4

}

public class E { }

public static void main(String[] args) {

ClassB b=new ClassB(); b.g(new ClassA()); }

A.good B.编译正确,但无运行结果 D.以上都不对 B.class 植物{?} D.public class 共有类{?} C.Float

D.static

C.编译错误:b.g(new ClassA()) 31、下列类的声明中不合法的是(A) 。 A.class People(){?} C.class A{?} A.public

B.extends

32、能作为类的修饰符, 也能作为类成员的修饰符的是A。 33、试完成下述程序片段 B 。 public class Point{

}

A.Point.x Point.y C.super.x super.y

B.this.x this.y D.无解

int x,y;

public Point(int x,int y){ } ......

( )=x; ( )=y;

34、在JAVA 中,下列说法正确的是(C) 。

A.一个子类可以有多个父类,一个父类也可以有多个子类 B.一个子类可以有多个父类,但一个父类只可以有一个子类 C.一个子类只可以有一个父类,但一个父类可以有多个子类 D.上述说法都不对

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

A.class Son implements Father C.class Father extends Son 不属于方法参数的不同C。 A.形式参数的个数不同。

B.形式参数的类型不同。 B.class Father implements Son D.class Son extends Father

36、重载指的是方法具有相同的名字,但这些方法的参数必须不同。下列哪种说法

C.形式参数的名字不同。 D.形式参数类型的排列顺序不同。

37、关于接口的定义和实现,以下描述正确的是D。 A.接口定义的方法只有定义没有实现

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

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

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

三、阅读程序题

1、写出运行结果: mainbord: 华硕,cpu: Intel 。

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(\华硕\ System.out.println(\ } }

2、写出运行结果: 0+1+3+5+7+9=25 。

public class ExamA {

private static int arr[] = new int[5]; public static void main(String args[]) { for(int i=arr.length-1;i>=0;i--) arr[i] = 2*i+1; String output = \ int sum = 0;

for(int i=0;i

output += \ + \ + arr[i]; }

output += \ = \ System.out.println(output); System.exit(0);

} }

3、写出运行结果: Peter is 17 years old! 。 public class Person{ String name; int age;

public Person(String name,int age){ this.name=name; this.age=age; }

public static void main(String[]args){ Person c=new Person(\ System.out.println(c.name+\ is \ years old!\} }

4、写出运行结果: a=60 b=20 c=30 。

public class abc{ }

class SuperClass{ }

class SubClass extends SuperClass{ }

class SubSubClass extends SubClass{

int a;

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

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

super(aa,bb); c=cc; } int a,b;

SuperClass(int aa,int bb){

a=aa; b=bb; }

System.out.println(\+a+\+b); }

public static void main(String args[]) {

SubSubClass x = new SubSubClass(10,20,30); x.show(); }

void show(){

}

super(aa,bb,cc); a=aa+bb+cc; }

System.out.println(\+a+\+b+\+c); }

void show(){

5.下面是一个类的定义,请将其补充完整 class __Student____{ String name; int age;

Student(_String_____ name, int a){ __this___.name=name; age=a; } }

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

class _A_____{ String s;

____static__ int a=3; A(String s){ this.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方法,让狗和猫吼叫。

interface CanCry{ }

class Dog implements CanCry{ }

class Cat implements CanCry{ }

public class G { }

static void makeCry(CanCry c){ }

public static void main(String []args){ }

Dog dog=new Dog(); Cat cat=new Cat(); makeCry(dog); makeCry(cat); c.cry(); public void cry(){ }

System.out.println(\我是猫,我的叫声是喵喵喵\); public void cry(){ }

System.out.println(\我是狗,我的叫声是汪汪汪\); public void cry();

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)输出效果如下:

class Car{ }

class SubCar extends Car{ }

public class Ex5_4_2 {

public static void main(String []args){ SubCar aodi,benchi;

aodi=new SubCar(\奥迪\,50,80); aodi.drive();

aodi.speedChange(120);

benchi=new SubCar(\奔驰\,100,90); benchi.drive();

benchi.speedChange(120); }

int price,speed;

public SubCar(String mark,int p,int s){ }

void drive(){ }

void speedChange(int newSpeed){ }

speed=newSpeed;

System.out.println(mark+\现在的速度是\+speed); System.out.println(mark+\原来的速度是\+speed); super(mark); price=p; speed=s;

System.out.println(mark+\的价格是\+price); String mark;

public Car(String mark){ }

void drive(){}

this.mark=mark;

System.out.println(\本车的品牌是\+mark);

}

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

String xm;// 姓名 String xb;// 性别 int nl;// 年龄

String jtzz;// 家庭住址 String xl;// 学历

class Resume{ }

private String xm,xb,jtzz,xl; private int nl; public String getXM(){ }

public String getXB(){ }

public String getJTZZ(){ }

public String getXL(){ }

public int getNL(){ }

public void setXM(String xm){ }

public void setXB(String xb){ }

public void setXL(String xl){ }

public void setJTZZ(String jtzz){ }

public void setNL(int nl){ }

this.nl=nl; this.jtzz=jtzz; this.xl=xl; this.xb=xb; this.xm=xm; return nl; return xl; return jtzz; return xb; return xm;

4.编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)

和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。

abstract class Shape{ }

class Circle extends Shape{ }

class Rectangle extends Shape{ }

public class Ex5_4_4 { }

public static void main(String args[]){ }

Shape r=new Rectangle(3,4);

System.out.println(\边长为3和4的矩形的面积是\+r.getArea()); r=new Circle(3);

System.out.println(\半径为3圆的面积是\+r.getArea()); public Rectangle(double a,double b){ }

public double getArea(){ }

return a*b; this.a=a; this.b=b;

public Circle(double r){ }

public double getArea(){ }

return pi*a*a; a=r; b=0;

final double pi=3.1415926; protected double a,b;

abstract public double getArea();

5.定义一个接口,接口中有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个方法,并将调用方法所得的结果输出。

interface interface1 {

long fact(int m);

long intPower(int m,int n); boolean findFactor(int m,int n);

}

class Ex implements interface1{ }

public class Ex5_4_5 { }

public static void main(String []args){ Ex ex=new Ex();

System.out.println(\+ex.fact(5));

System.out.println(\的3次方是\+ex.intPower(5,3));

System.out.println(\和35的和大于100是\+ex.findFactor(76,35)); }

public long fact(int m){ }

public long intPower(int m,int n){ }

public boolean findFactor(int m,int n){ }

return m+n>100; if(n==0)

return 1;

return intPower(m,n-1)*m; if(m==0||m==1)

return 1; return fact(m-1)*m;

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

interface IShape{ }

class Square implements IShape{ }

public class Ex_5_4_6 {

public static void main(String []args){

System.out.println(\边长为5的正方形的面积是\+new Square(5).area()); }

private double a; public Square(double a){ }

public double area(){ }

return a*a; this.a=a;

public double area();

本文来源:https://www.bwwdw.com/article/nhod.html

Top