面向对象技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象技术(本)》课程第一阶段练习题

一.填充题

1.Java源程序文件的扩展名是java;Java源程序经编译后生成Java字节码文件,其扩展名是class。

2.Java程序可分为Application和Applet两大种类。

3.开发与运行Java程序需要经过的三个主要步骤为编写源程序、

编译源程序和解释运行字节码文件。

4.在Java程序中定义的类有两种成员:成员变量、成员方法。

5.一个Application源程序文件名为MyPro.java,如果使用Sun公司的Java开发工具SDK编译该源程序文件并使用其虚拟机运行这个程序的字节码文件,应该顺序执行如下两个命令:

javac MyPro.java 、

java MyPro 。

6.定义初值为123456789的长整型变量 var 的语句是__long var=123456789L;__。

7.在Java语言中,逻辑常量值除了true之外另一个是false。

8.表达式15+4*5-12的运算结果是23。

二.选择题

1.编译Java源程序文件后所产生的字节码文件的扩展名为: C

A.java B. html C.class D. exe

2. main方法是Java Application程序执行的入口点,以下main方法头部合法的是:B

A. public static void main()

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

C. public static int main(String[] arg)

D. public void main(String arg[])

3.下面的Java源文件代码片断是不正确的定义次序的是: D

A.package mypack;

public class Demo{//do something…

}

B.import java.io.*;

importjava.awt.*;

public class Demo{//do something…

}

C.import java.io.*;

class Demo{//do something…

}

public class Demo1{//do something…

}

D.import java.io.*;

package mypack;

public class Demo{//do something…

}

4. 下面选项能正确表示Java语言中的一个整型常量的是: C

A.9.0 B.1 000 000 C. -40 D.1 2 3

5. 下列变量定义错误的是: A

A.float x; y; B. float x, y=1.3f;

C. public inti=10,j=3, k;

D. char ch1=’m’,ch2=’/’;

6.找出下列错误的变量定义:C

A) long a=987654321L;B) int _b=123;

C) static e=32761; D) intc,d;

7. Java语言具有许多优点和特点,下列选项中哪个反映了Java程序并行机制的特点?B

A) 安全性 B)多线性 C)跨平台 D)可移植

8. 下列叙述中,正确的是A

A)Java语言的标识符是区分大小写的

B)源文件名与public类名可以不相同

C)源文件扩展名为.jar

D)源文件中public类的数目不限

9. 下列属于合法的Java标识符是A

A)_cat B)5books C)+static D)-3.14159

10. 在Java中,表示换行符的转义字符是A

A)\n B)\f C)'n' D)\dd

三.简答题

1.Java有哪些特点?

答案:

1.Java程序设计语言是新一代语言的代表,它强调了面向对象的特性,可以被用来开发范围广泛的软件,它具有支持图形化的用户界面、网络以及数据库连接等复杂的功能,Java 语言的主要的特点有:

(1)易于学习

Java语言很简单,它的语法非常类似于C++,但是它摒弃了C++许多低级、困难、容易混淆、容易出错或不经常被使用的功能。

(2)高效率的执行方式

用Java语言编辑的源程序的执行方法是采用先经过编译器编译、再利用解释器解释的方式来运行的。它综合了解释性语言与编译语言的众多优点,使其执行效率较以往的程序设计语言有了大幅度的提高。

(3)与平台无关性

Java源程序经过编译器编译,会被转换成一种我们将它称之为“字节码(byte_codes)”

的目标程序,可以跨平台运行。

(4)分布式

分布式主要是指数据分布和操作分布两层意思,数据分布是指数据可以分散在网络中不同的主机上,操作分布是指把一个任务分散在不同的主机上进行处理。Java从诞生起就与网络联系在一起,它强调网络特性,内置TCP/IP,HTTP,FTP协议类库,便于开发网上应用系统。

(5)安全性

Java2平台采用了域管理方式的安全模型,无论是本地代码还是远程代码都可以通过配置的策略,设定可访问的资源域,使得Java成为安全的编程语言。

(6)多线程

Java的多线程机制使应用程序中的线程能够并发执行,保证了对共享数据的正确操作,可以分别用不同的线程完成特定的行为,很容易在网络上实现实时交互行为。

(7)丰富的API(Application Program Interface)类库

Java开发工具包中的类库包罗万象,应有尽有,程序员的开发工作可以在一个更高的层次上展开,这也正是Java受欢迎的重要原因之一。Java同时为用户提供了详尽的API 文档说明。

2.Java的虚拟机是什么?

我们可以直观地理解:任何一种可以运行Java程序(即可以担任Java解释器)的软件都可以被称为Java虚拟机(Java virtual machine, JVM),因此诸如浏览器与Java的一部份开发工具等皆可看作一部JVM。当然我们可以把Java的字节码(byte_codes)看成是JVM所运行的机器码。

3.画出Java程序从源程序到编译、解释、运行的过程图?

Java语言编辑的源程序的执行方法是先经过编译器编译、再利用解释器解释的方式来运行的。其从源程序到编译解释运行的过程图如下:

4.简述Java家族的J2SE、J2ME与J2EE。

Java的大家族中有三个主要成员:

(1)J2ME——Java 2 Micro Edition用语嵌入式Java消费电子平台。不论是无线通讯、手机、PDA等小型电子装置都可采用其作为开发工具及应用平台。

(2)J2SE——Java 2 (Software Development Kit)Standard Edition是Java最通行的版本,是用于工作站、PC机的Java标准平台。

(3)J2EE——Java 2 Enterprise Edition可扩展的企业应用Java 2平台,它提供了企业e-Business架构及Web Services服务,除深受广大企业用户的欢迎之处是其开放

的标准和优越的跨平台能力。

5.Java的字节码是什么?

Java源程序经过编译器编译,会被转换成一种我们将它称之为“字节码(byte_codes)”的目标程序。“字节码”的最大特点便是可以跨平台运行,即程序设计人员们常说的“编写一次,到处运行”,正是这一特性成为Java得到迅速普及的重要原因。

《面向对象技术(本)》课程第二阶段练习题

一、填空题

1.表达式(18-4)/6+6的运算结果是8。

2.表达式2>=5的运算结果是False。

3.表达式5>2 && 8<8 &&23<36的运算结果是False。

4.表达式56/9+3.6的运算结果是9.6。

5.表达式48%9+5*5-4的运算结果是24。

6.表达式:9-7<0 || 11>8的运算结果是True。

7.表达式:(3>2) ? 8 : 9的运算结果是8。

8.表达式: 9==8 && 3<7的运算结果是False。

9.假设int m=2,float n=0.1f,经过下列表达式的连续运算后,m、n的值分别为0, -15.4。

m*=5/m-1;

n-=5*3.1;

10.设x,y,max,min均为int型变量,x、y已赋值。用三目条件运算符将x、y的较大值赋给变量max、较小值赋给变量min的语句分别是___max=(x>y)?x:y___和___min=(x

11.当整型变量n的值不能被7除尽时,其值为false的Java语言表达式是__n%7==0__。

12.执行以下程序段后,x = __6___,y =___30___。

int x = 5, y=5;

y = ++x * y--;

二、选择题

1. 找出下列中正确的变量定义 A

A) double d; B) float f=6.6;

C) byte b=130; D) booleant="true";

2.找出以下字符常量中不正确的表示 D

A) '数' B) '#' C) '*' D) "a"

3.找出下面double型常量的正确表示 A

A) -8.0 B) 1.5e-4F C)abcf D) Float.MIN_VALUE

4.定义a为int类型的变量。找出下列中正确的赋值语句选项 A

A) int a=6 ; B) a ==3; C) a=3.2f; D) a=”83”;

5.假设以下选项中的变量都已正确定义,找出不合法的表达式 C

A) a >= 4 == b<1 B) 'n'-3 C) 'a'=8 D) 'A'%6

6. 在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是 D

A)java.applet

B)java.awt

C)java.util

D)ng

7. 在Java中,所有类的根类是 A

A)ng.Object

B)ng.Class

C)java.applet.Applet

D)java.awt.Frame

8. 在Java中,用Package语句说明一个包时,该包的层次结构必须是 B

A)与文件的结构相同

B)与文件目录的层次相同

C)与文件类型相同

D)与文件大小相同

三、问答题

1.Java是什么?Java平台由那几部分组成?

Java是一种面向对象的程序设计语言,Java是健壮和安全的语言,Java是平台无

关的语言。Java平台由Java应用编程接口(API)和Java虚拟机(JVM)组成,这

个平台构成了Java在不同计算机系统中编译和运行的环境。

2.Java数据类型可分为几大类?Java基本数据类型包括哪些?

Java中的数据类型可以分为基本类型和对象类型两大类。其中基本数据类型包括:整数类型、实数类型、字符类型、布尔类型。

3.在程序设计的流控制中,有哪些基本结构?在Java语言中是如何实现的?

在程序设计的流控制中,有如下3种基本结构:顺序结构、选择结构、循环结构。

在Java语言种顺序结构由顺序执行的各条语句实现;选择结构由if语句、switch

语句实现;循环结构由while语句、do-while语句和for语句实现。

四、编写程序,利用System.out.println( ) 方法分别输出下列语句

的执行结果:

a)将变量m的初值赋值为10,变量n的初值赋值为5。

b)变量m的值加3,n的值加5。

c)求m和n的平均值,并将该值赋予变量p。

d)将m的平方乘以n的平方并赋值给变量q。

请注意各变量定义时所应该使用的数据类型。

a)int m=10; int n=5; System.out.println(m); System.out.println(n);

b)m+=3; n+=5; System.out.println(m); System.out.println(n);

c)double p; p=(m+n)/2.0; System.out.println(p);

d)double q; q=m*m*n*n; System.out.println(q);

《面向对象技术(本)》课程第三阶段练习题

一.填充题

1.下面的程序经运行后,其输出结果是y=1 x=0。

public class Yuedu1{

public static void main(String args[]){

intx,y;

x=y=0;

do{

y++;

x*=x;

} while((x>0)&&(y>5));

System.out.println("y="+y+" x="+x);

}

}

2.下面的程序经运行后,其输出结果是* # * # *。public class Yuedu2{

public static void main(String args[]){

inti;

for (i=1;i<6;i++){

if (i%2) {

System.out.print("#");

continue;

}

System.out.print("*");

}

System.out.println();

}

}

3.下面的程序经运行后,其输出结果是x1=10 x2=6。public class Yuedu3{

public static void main(String args[]){

intx,i;

System.out.println("x1="+add(4,6));

System.out.println("x2="+add(3,add(1,2)));

}

static int add(int x , int y) {

return x+y;

}

}

4.下面的程序经运行后,其输出结果是72。

public class Yuedu3{

public static void main(String args[]){

System.out.println(fun(4));

}

static int fun(int n) {

int t;

if((n==0)||n==1)

t=3;

else

t=n*fun(n-1);

return t;

}

}

5.下面的程序经运行后,其输出结果是*

* *

* *

* *

* *

* *

* *

* *

* *

* *

*。

public class Shape{

public static void main(String args[]){

int n=6,i,j;

for(i=0;i<=n-2;i++)

System.out.print(" ");

System.out.println("*");

for(i=1;i<=n-1;i++){

for(j=0;j<=n-i-2;j++)

System.out.print(" ");

System.out.print("*");

for(j=0;j<=2*i-2;j++)

System.out.print(" ");

System.out.println("*");

}

for(i=n-2;i>=1;i--){

for(j=0;j<=n-i-2;j++)

System.out.print(" ");

System.out.print("*");

for(j=0;j<=2*i-2;j++)

System.out.print(" ");

System.out.println("*");

}

for(i=0;i<=n-2;i++)

System.out.print(" ");

System.out.println("*");

}

}

二.程序改错

1.下面程序实现对自然数1到10的求和计算,编译时程序出错,请改正。

#1 public class Add_Sum{

#2 public static void main(String args[]){

#3int sum=0;

#4 for ( inti=1;i<=10;i++)

#5 sum=sum+i;

#6 System.out.println("i="+i+", sum="+sum);

#7 }

#8 }

#6改为:System.out.println(“sum=”+sum);

2.下例程序实现对一个16位的长整数,统计0~9这十个数字每一个出现的次数。程序有错,请改正之。

#1 public class StatNum{

#2 public static void main(String args[]){

#3int m;

#4int a[]=new int[10];

#5 long aa=1586488654895649;

#6 for (inti=0;i<=15;i++){

#7 m=aa %10;

#8 a[m]=a[m]+1;

#9aa=aa/10;

#10 }

#11 for (m=0;m<10;m++)

#12System.out.println(m+": "+a[m]);

#13 }

#14 }

#5改为:long aa=1586488654895649L;

#7改为:m=(int)aa%10;

3.下例程序实现将两个各有6个整数的数组,合并成一个由小至大排列的数组(该数组的长度为12)。程序有错,请改正之。

#1 import java.io.*;

#2 public class SortArray{

#3 public static void main(String args[]) throws IOException{

#4intm,n,k;

#5intaa[]=new int[6];

#6int bb[]=new int[6];

#7int cc[]=new int[12];

#8 for (inti=0;i<=6;i++){ //利用产生随机数的方式为数组赋值。

#9 m=100*Math.random();

#10aa[i]=m;

#11 n=100*Math.random();

#12 bb[i]=n;

#13 System.out.println(aa[i]+" "+bb[i]);

#14 }

#15 for (inti=0;i<6;i++) //先将两个数组进行排序

#16 for (int j=i;j<6;j++){

#17 if (aa[i]>aa[j])

#18 {int t=aa[i];aa[i]=aa[j];aa[j]=t;}

#19 if (bb[i]>bb[j])

#20 {int t=bb[i];bb[i]=bb[j];bb[j]=t;}

#21 }

#22 m=0; //用合并法将两个有序数组排序并合并

#23 n=0;

#24 k=0;

#25while (m==6 &&n==6) {

#26 if (aa[m]<=bb[n])

#27 cc[k]=aa[m];m++;

#28 else

#29 cc[k]=bb[n];n++;

#30 k++;

#31}

#32while (m==6)

#33{ cc[k]=aa[m];m++;k++;}

#34while (n==6)

#35{ cc[k]=bb[n];n++;k++;}

#36for (inti=0;i<12;i++)

#37System.out.print(cc[i]+" ");

#38 }

#39 }

#8改为:for(inti=0; i<6; i++)

#9改为:m=(int)100*Math.random();

#11改为:n=(int)100*Math.random();

#25改为:while (m<6 &&n<6)

#32改为:while(m<6)

#34改为:while(n<6)

4.下例程序以递归的方式实现1+2+3+……+n(n = 200)的计算。程序有错,请改正之。#1 class RecuSum{

#2 long Sum1(int n){

#3if (n==1)

#4Sum1= 1;

#5 else

#6Sum1= n+Sum1(n-1);

#7 }

#8 public static void main(String args[]) {

#9int n=200;

#10System.out.println("Sum="+Sum1(n));

#11 }

#12 }

#2改为:static long Sum1(int n){;

#4改为:return 1;

#6改为:return n+Sum1(n-1);

三.编程题

1.试编写一个程序,将1~500间能同时被2,5,7整除的数打印出来。

1.public class Program{

public static void main( String[] args) {

for (inti=1; i<=500; i++) {

if ((i%2==0) && (i%5==0) && (i%7==0)) {

System.out.println(i);

}

}

}

}

2.如果我国的经济增长以每年8%的速度保持稳定不变,试编写一个程序,计算经过多少年可以实现总量翻两番?

public class DoubleTimes {

public static void main(String[] args) {

int n=0;

double inc=0.08, sum=1;

while (sum<=4) {

sum=(1+inc)*sum;

n++;

System.out.println(“第”+ n + “年达到” + sum);

}

System.out.println(“一共”+ n + “年实现翻两番。”);

}

}

《面向对象技术(本)》课程第四阶段练习题

一、填充题

1.超类的private成员不能被子类继承。

2.在声明一个类变量时,前面必须要加上static修饰符。3.import java.util.*;语句可导入Java的实用包中所有的类。

4.方法的覆盖是后期绑定,方法的重载是前期绑定。

5.写出一个表达式:输出角度300的余弦值Math.cos(30*3.14/180)。

二、选择题

B1. 找出有关类的正确说法。

a.类具有封装性,所以类的数据是不能被访问的。

b.类具有封装性,但可以通过类的公共接口访问类中的数据。

c.声明一个类时,必须用public修饰符。

d.每个类中,必须有main方法,否则程序无法运行。

e.

A2. 将类的成员的访问权限设置为默认的,则该成员能被

a.同一包中的类访问

b.其它包中的类访问

c.所有的类访问

d.所有的类的子类访问

C 3.下面哪一种是正确的方法重栽

a. int fun(inta,float b){}

float fun(inta,float b){}

b. float fun(inta,float b){}

float fun(intx,float y){}

c. float fun(float a){}

float fun(float a,float b){}

d. flaot fun1(inta,float b){}

float fun2(inta,float b){}

D 4.下面关于继承的说法那个是正确的

a. 超类的对象就是子类的对象。

b. 一个类可以有几个超类。

c. 一个类只能有一个子类。

d. 一个类只能有一个超类。

C 5.下面关于多态性的说法那个是正确的

a. 一个类中,不能有同名的方法。

b. 子类中不能有和父类中同名的方法。

c. 子类中可以有和父类中同名且参数相同的方法。

d. 多态性就是方法的名字可以一样,但返回的类型必须不一样。

三、简答题

1.什么是类,什么是对象?

在面向对象的程序设计语言中,类是一种特殊属性类型,类可以看作具有共同属性和行为的事物的抽象。在类中包含了变量和与变量有关的操作(方法)。对象是类的实例。类和对象的关系就如同属性类型和变量的关系。例如,“电话”类代表电话这一类事物,而电话的对象代表一个具体的电话。

2.类的封装的目的是什么?

当外部的类可以没有限制地直接访问、修改类中变量时,是非常危险的。因此必须限制类的外部程序对类内部成员的访问,这就是类的封装目的。类把属性和方法封装起来,同时创建一些允许外部访问的方法,通过这样的方法来访问类的成员变量。封装的另一目的是细节屏蔽,便于程序功能的扩展和程序的维护。

3.Java中有几种访问权限,各种访问权限的级别是什么?

Java中有四种访问权限:公有的(public)、保护的(protected)、默认的、私有的(private)。各种权限的访问级别如下表:

4.null、this、super对象运算符分别表示什么?

null表示空对象,即没有创建类的任何实例。当我们声明对象时,如果没有用new实例化时,此时它就被初始化为一个特殊的值“null”。而当我们在类的方法定义中需要引用正在使用该方法的对象时,可以用“this”表示。uper表示对某个类的超类的引用,用super来引用被子类屏蔽的超类的成员。

5.什么是最终类和抽象类?

不能被继承的类称为最终类。在声明类时,用final将类声明为最终类,这样此方法不会在子类中被覆盖(即子类中不能有和此方法同名的方法)。抽象类则是必须被子类覆盖的类。在声明类或方法时,用关键字abstract可以将类或方法声明为抽象类或方法。抽象方法没有方法体,含有抽象方法的类即为抽象类,它是不能实例化的类。

6.什么是多态性,什么重载和覆盖?

多态性是面向对象程序设计的重要特征,是指同一个名字的若干个方法,有不同的实现(即方法体中的代码不一样)。多态性是通过方法的重载(overloading)和覆盖(override)来实现。方法的重载是指在一个类中,有若干个方法名字相同,但方法的参数不同,在调用时,根据参数的不同来决定执行那个方法。重载的关键是参数必须不同,即参数的类型或个数必须不同。如果在子类和超类中有同名的方法(参数也相同),子类中的方法将覆盖超类的方法,这就是覆盖。通过覆盖可以使同名的方法在不同层次的类中有不同的实现。

四、编程题

1.声明一个类Person,成员变量有姓名、年龄、性别。有成员方法以显示姓名、年龄和性别。

class Person {

String name;

int age;

String sex;

public String showName() {

return name;

}

public intshowAge() {

return age;

}

public String showSex;() {

return sex;

}

}

2.声明一个矩形类Rectangle,提供2个方法计算矩形的周长和面积。并用main方法来测试。

public class Retangle {

private double length;

private double width;

public Retangle(double l, double w) {

length=l;

width=w;

}

public double calcPerimeter() {

return 2*(length + width);

}

public double calcAera() {

return length * widthv;

}

public static woid main( String[] args) {

Retanglearetangle = Retangle(640m480);

System.out.println(“面积是:” + aretangle.calcArea() + “周长是:”

+ aretangle. calcPerimeter () );

}

}

相关文档
最新文档