当前位置:文档之家› java语言程序设计——复习资料

java语言程序设计——复习资料

java语言程序设计——复习资料
java语言程序设计——复习资料

JAVA编程技术复习纲要

(JA VA语言程序设计郑莉王行言马素霞)

第1章JAVA语言基础知识

1.1JAVA语言与面向对象的程序设计

1简述面向对象的编程语言与以往编程语言的根本不同点

面向对象的编程语言与以往编程语言的根本不同在于抽象机制的不同。

机器语言和汇编语言几乎没有抽象,对于机器而言是最合适的描述,它可以直接操作机器的硬件,并且任何操作都是面向机器的,这就要求人们在使用机器语言或汇编语言编写程序时,必须按照机器的方式去思考问题。因为没有抽象机制,所以程序员不得不陷入复杂的事物之中。

面向过程的语言使程序员可以离开机器层次,在更抽象的层次上表达意图。但它所关注的只是处理过程,即执行预期计算所需要的算法。

面向对象的编程语言将客观事物看作具有状态和行为的对象,通过抽象找出同一类对象的共同状态(静态特征)和行为(动态特征),构成模型——类。而程序需要解决的问题便反映为各种不同属性的对象以及对象之间的关系和消息传递。面向对象的方法在程序设计领域是一种相对较新的方法,它更接近于人类处理现实世界问题的自然思维方法。

2封装的好处

封装带来的好处是:隐藏类的数据、控制用户对类的修改和控制数据访问权限

3面向对象技术给软件发展带来的益处

●可重用性:一个设计好的类可以在今后的程序开发中被部分或全部地重复利

用。

●可靠性:每一个类作为一个独立单元可以单独进行测试、维护,大量代码来源

于可靠的类库,因而开发新程序时新增代码明显减少,这是程序可靠性提高的

一个重要原因。

4面向对象语言的基本特征

●抽象和封装:抽象的结果形成类,类中的数据和方法是受保护的,可以根据需

要设置不同的访问控制属性。这便保证了数据的安全性,隐藏了方法的实现细

节,也方便了使用。

1 / 44

●继承性:可以对已有类增加属性和功能,或进行部分修改来建立新的类,实现

代码的重用。

●多态性:在面向对象的程序中,同一个消息被不同对象接收后可以导致不同的

行为。

5Java语言的特点

●面向对象:Java是完全面向对象的语言。Java语言提供类的机制,在对象中封

装了成员变量和方法,实现了数据的封装和信息隐藏;类提供了一类对象的模

型,通过继承和多态,实现了代码的复用。

●安全性:Java不支持指针,一切对内存的访问都必须经过对象的实例变量实现,

防止了以不法手段访问对象的私有成员,同时避免了指针操作中容易产生的错

误。Java的内部安全措施保证了Java程序在Java虚拟机规则下操作,防止未

授权的程序访问含有专用信息的系统资源或危及客户机的完整性。

●操作平台无关性:Java编译器生成与平台无关的字节码指令,只要安装了Java

运行系统,其程序就可以在任意的处理器上运行。这些字节码对应于Java虚拟

机中的表示,Java解释器得到字节码后,对其进行解释,使之能够在不同的平

台下运行。不同的操作系统有不同的虚拟机,与平台无关的特性使得Java程序

可以方便地移植到不同的机器上。

●多线程:Java是第一个在语言级提供内置多线程支持的高级语言,这大大简化

了多线程程序的编写。而一些其他语言要通过调用操作系统的原语来支持多线

程。

●动态内存分配:Java中所有的对象都是通过动态内存分配建立的,Java对内存

自动进行管理并进行垃圾回收,防止了因程序员失误而导致的内存分配错误,

进而更好地利用了系统资源。

1.2JAVA程序概述

6Java程序编译执行的过程

首先把源文件(.java文件)编译成字节码文件,即类文件(.class);然后由解释器负责解释执行类文件。

7Java平台

Java平台包括Java应用程序接口(API)和Java虚拟机(Java virtual machine,JVM)。

Java应用程序接口是指经过编译的,可在程序中直接使用的Java代码标准库。Java 虚拟机负责解释和执行Java程序。

Java程序运行于Java平台之上,Java虚拟机将程序和硬件隔离开来。

1.3基本数据类型与表达式

2 / 44

8变量的作用域

变量的作用域指可以访问该变量的程序代码范围。按照作用域的不同,变量可以分为类成员变量和局部变量。类成员变量在类的声明体中声明,其作用域为整个类;

局部变量在方法体或方法的代码块中声明,其作用域为它所在的代码块(即花括号{}的范围)。

9基本数据类型(基本数据类型有几种?分别是什么?)

基本数据类型是指Java固有的数据类型,可以分为数字型、布尔型和字符型

数字型基本数据类型有六种,其说明如下表:

类型说明长度最小值最大值

byte 带符号位整数8位-128 127

short 带符号短整数16位-215215-1

int 带符号整数32位-231231-1

long 带符号长整数64位-263263-1

float 单精度浮点数32位2-149(2-2-23).2127 double 双精度浮点数64位2-1074(2-2-52).21023布尔型数据表示一个逻辑量,只有两个值true和false,它们不对应于任何整数值。

字符类型数据用于存储单个字符,字符以代码形式存储。Java字符数据类型是16位,最小值0,最大值65535,放置Unicode符号。

10类型转换的分类

类型转换可以分成扩展转换和窄化转换两类。

byte, short, int, long, float, double

char

扩展

double, float, long, int, short, byte,char

窄化

按照扩展方向转化,从一种整型转换到另一种整型,或者从float转换到double时,不损失任何信息。从整型转换到float或者double将损失精度。

窄化转换可能会丢失信息。

11发生类型转换的四种可能情况

赋值转换

3 / 44

●方法调用转换

●强制类型转换

●字符串转换

1.4数组的概念

12数组的概念

数组是由同类型的数据元素构成的一种数据结构。数据元素可以是基本数据类型也可以是引用类型。通过数组名和数组元素下标(或称为索引)可以引用数组中的元素。

每个数组都有一个名为length的成员变量,用来表示数组所包含的元素的个数,length只能是正整数或零。数组创建之后length就不能被改变。

1.5数组的创建和引用

13图示下面创建并初始化一个三行的二维数组的过程

int[ ][ ] myArray;

myArray = new int[3][ ] ;

myArray[0] = new int[3];

int[ ] x = {0, 2};

int[ ] y = {0, 1, 2, 3, 4} ;

myArray[1] = x ;

myArray[2] = y ;

第2章类与对象的基本概念

2.1面向对象的程序设计方法概述

4 / 44

1抽象

抽象就是忽略问题中与当前目标无关的那些内容,以便更充分地注意与当前目标有关的方面。计算机软件开发中所使用的抽象有过程抽象及数据抽象两类。

过程抽象将整个系统的功能划分为若干部分,强调功能完成的过程和步骤,而隐藏其具体的实现。基于过程抽象的两个标准程序设计技术是过程分解及递归技术。

数据抽象是将系统中需要处理的数据和这些数据上的操作结合在一起,抽象成不同的抽象数据类型,每个抽象数据类型既包含了数据,也包含了针对这些数据的操作。

相对于过程抽象,数据抽象是更为合理的抽象方法。

面向对象的软件开发方法的主要特点之一就是采用了数据抽象的方法来构建程序的类及对象。

2封装

封装是一种信息隐蔽技术,就是利用抽象数据类型将数据和基于数据的操作封装在一起。用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的。封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象。

3继承

继承是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的派生类(也称为子类)。在继承过程中派生类继承了基类的特性,包括方法和实例变量。派生类也可修改继承的方法或增加新的方法,使之更适合特殊的需要。继承有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量。

4单继承

任何一个派生类都只有单一的直接父类,类层次结构为树状结构。

5多继承

一个类可以有一个以上的直接父类,类层次结构为网状结构,设计及实现比较复杂。

6多态

多态是指一个程序中同名的不同方法共存,主要通过子类对父类方法的覆盖来实现。

不同类的对象可以响应同名的消息(方法) ,具体的实现方法却不同。多态性使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序方法同名问题。

5 / 44

2.2类与对象

7类和对象

一个类是对一类对象的描述。类是构造对象的模板,对象是类的具体实例

8类的声明语法格式

[public] [abstract | final] class 类名称

[extends 父类名称]

[implements 接口名称列表]

{

变量成员声明及初始化;

方法声明及方法体;

}

说明:

●class:表明其后声明的是一个类

●extends:如果所声明的类是从某一父类派生而来,那么,父类的名字应

写在extends之后

●implements:如果所声明的类要实现某些接口,那么,接口的名字应写

在implements之后

●修饰符可以有多个,用来限定类的使用方式

?public:表明此类为公有类

?abstract:指明此类为抽象类

?final:指明此类为终结类

9对象的创建

生成实例的格式:new <类名>()

其作用是:在内存中为此对象分配内存空间,返回对象的引用(reference ,相当于对象的存储地址)。

10数据成员

数据成员表示Java类的状态。声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性。在一个类中成员变量名是唯一的。数据成员的类型可以是Java 中任意的数据类型(简单类型,类,接口,数组)。分为实例变量和类变量。

6 / 44

数据成员的声明格式:

[public | protected | private][static][ final][transient] [volatile]变量数据类型

变量名1[=变量初值], 变量名2[=变量初值], …;

格式说明

●public、protected、private 为访问控制符

●static指明这是一个静态成员变量

●final指明变量的值不能被修改

●transient指明变量是临时状态

●volatile指明变量是一个共享变量

11实例变量

没有static修饰的变量称为实例变量(Instance Variables)。用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。

可通过下面的表达式访问实例属性的值

<实例名>.<实例变量名>

12类变量

类变量也称为静态变量,声明时需加static修饰符。不管类的对象有多少,类变量只存在一份,在整个类中只有一个值。类初始化的同时就被赋值。

适用情况:

●类中所有对象都相同的属性

●经常需要共享的数据

●系统中用到的一些常量值

引用格式:

<类名| 实例名>.<类变量名>

13方法成员

方法成员定义类的行为:

●一个对象能够做的事情

●我们能够从一个对象取得的信息

可以没有,也可以有多个;一旦在类中声明了方法,它就成为了类声明的一部分。

分为实例方法和类方法

声明格式:

7 / 44

[public | protected | private]

[static][ final][abstract] [native] [synchronized]

返回类型方法名([参数列表]) [throws exceptionList]

{

方法体

}

格式说明:

?方法修饰

◆public、protected、private 为存取控制符

◆static指明方法是一个类方法

◆final指明方法是一个终结方法

◆abstract指明方法是一个抽象方法

◆native用来集成java代码和其它语言的代码

◆synchronized用来控制多个并发线程对共享数据的访问

?返回类型

◆方法返回值的类型,可以是任意的Java数据类型

◆当不需要返回值时,返回类型为void

?参数类型

◆简单数据类型,

◆引用类型(数组、类或接口)

◆可以有多个参数,也可以没有参数,方法声明时的参数称为形式

参数

?throws exceptionList

◆用来处理异常

14包的作用

●将相关的源代码文件组织在一起;

●不同包中的类名可以相同,从而可以避免名字冲突;

●提供包一级的封装及存取权限。

15编译单元的组成

●所属包的声明(省略,则属于默认包);

●Import (引入)包的声明,用于导入外部的类;

●类和接口的声明。

16类的访问控制

类的访问控制只有public(公共类)及无修饰符(缺省类)两种

访问权限符与访问能力之间的关系如表

8 / 44

类型无修饰public

同一包中的类yes yes

不同包中的类no yes

17类成员的访问控制

类型private 无修饰protected public

同一类yes yes yes yes

同一包中的子类no yes yes yes

同一包中的非子类no yes yes yes

不同包中的子类no no yes yes

不同包中的非子类no no no yes

18关键字this的使用

如果形式参数名与实例变量名相同,则需要在实例变量名之前加this关键字,否则系统会将实例变量当成形式参数。

2.3对象的初始化和回收

19构造方法

构造方法(Constructor)是一种特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个新的对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。系统在产生对象时会自动执行。

20构造方法的特点(简述构造方法的特点)

1)构造方法的方法名与类名相同;

2)构造方法没有返回类型(修饰符void也不能有);

3)构造方法通常被声明为公有的(public);

4)构造方法可以有任意多个参数;

5)构造方法的主要作用是完成对象的初始化工作;

6)构造方法不能在程序中显式的调用;

7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初

始化。

2.4应用举例

2.5UML简介

9 / 44

第3章类的方法

3.1方法的控制流程

1Java中的流程控制

Java中的流程控制主要有顺序结构、选择结构和循环结构三种。

顺序结构即是按照从上到下的顺序执行语句,没有转移和重复。

选择结构是根据给定的条件成立与否,执行不同的语句或语句组。Java的选择结构主要有二路选择结构(if选择结构)及多路选择结构(switch选择结构)两种。

循环控制结构是在一定的条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体。

2循环包括几个部分

1)初始化部分:用来设置循环的一些初始条件,如计数器清零等。

2)循环体部分:这是反复执行的一段代码,可以是单一的一条语句,也可以是复

合语句。

3)迭代部分:这是当前循环结束,下次循环开始执行的语句,常常用来使计数器

进行增减操作。

4)终止部分:通常是布尔表达式,每一次循环要对该表达式求值,以验证是否满

足循环终止条件。

3break语句的用法

break语句可用于三种情况:

1)在switch结构中,break语句用来终止switch语句的执行。

2)在for循环及while循环结构中,用于终止break语句所在的最内层循环。

3)break语句也可用在代码块中,用于跳出它所指定的块。

4break与label一同使用举例

public class Examp3_7{

public static void main(String[] args){

outer:

for (int i=1; i<=9;i++) {

for (int j=1; j<=9;j++){

if (j > i) break;

if (i==6) break outer;

10 / 44

System.out.print(" "+i+"*"+j+"="+i*j);

}

System.out.println();

}

}

}

5continue语句的用法

continue语句必须用于循环结构中,continue语句有两种使用格式:

1)不带标号的continue语句。它的作用是终止当前这一轮循环,跳出本轮循环剩

余的语句,直接进入当前循环的下一轮。在while或do-while循环中,不带标号的continue语句会使流程直接跳转至条件表达式;在for循环中,不带标号的continue语句会跳转至表达式update-expression,计算并修改循环变量后再判断循环条件。

2)带标号的continue语句。带标号的continue语句使程序的流程直接转入标号标

明的循环层次。

6带标号的continue语句举例

public class Examp3_10{

public static void main (String args[]) {

outer:

for (int i=1; i<10; i++){

inner:

for (int j=1; j<10; j++){

if (i

System.out.println();

continue outer;

}

System.out.print(" "+i+"*"+j+"="+i*j);

}

11 / 44

}

}

}

7求出100以内的素数,并将这些数在屏幕上5个一行地显示出来。

public class primeIn100{

public void prime(){

int count = 0;

Outer:

for (int i = 2; i < 100; i++){

for (int j = 2; j <= Math.floor(Math.sqrt(i)); j++){

if (i % j == 0) continue Outer;

}

System.out.print(i + " ");

count++;

if (count % 5 == 0) System.out.println();

}

}

public static void main(String args[]){

primeIn100 p = new primeIn100();

p.prime();

}

}

3.2异常处理简介

8异常的基本概念

又称为例外,是特殊的运行错误对象,是面向对象规范的一部分,是异常类的对象。

Java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。

9错误的分类

通常程序中的错误可以分成三类,即编译错误、运行错误和逻辑错误。

Java系统中根据错误的严重程度不同,将错误分为两类:

12 / 44

1)错误:是致命性的,即程序遇到了非常严重的不正常状态,不能简单地恢复执

行。

2)异常:是非致命的,通过某种修正后程序还能继续执行。

10异常的抛出和捕获

当程序中发生异常时,称程序产生了一个异常事件,相应地生成异常对象。生成的异常对象传递给Java运行时系统。异常的产生和提交的这一过程称为抛出。

异常发生时,Java运行时系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法处理,这一过程称为捕获。

11异常的处理

对于检查型异常,Java强迫程序必须进行处理,处理方法有以下两种:

1)声明抛出异常:不在当前方法内处理异常,而是把异常抛出到调用方法中。

2)捕获异常:使用try{}catch(){}块,捕获到所发生的异常,并进行相应的处理。12用户自定义异常

用户自定义的异常类都必须是Exception的子类。一般的声明方法如下:

public class MyExceptionName extends SuperclassOfMyException {

public MyExceptionName() {

super("Some string explaining the exception");

}

}

3.3方法的重载

13方法的重载

方法的重载(overloading)是指在一个类中可以有名字相同的多个方法,但这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。返回值可以相同,也可以不同。

第4章类的重用

4.1类的继承

1继承

13 / 44

继承是一种由已有的类创建新类的机制,是面向对象程序设计的基石之一。一个新类可以从现有的类中派生,这个过程称为类继承。派生出的新类称为已有类的子类,已有类称为超类(父类)。

2属性的隐藏

子类对从父类继承来的属性变量重新加以定义,则从父类继承的属性将被隐藏。

访问被隐藏的父类域有两种方法:

1)调用从父类继承的方法,则操作的是从父类继承的域;

2)使用super.域名

3属性隐藏的例子

class A1

{

int x = 2;

public void setx(int i){

x = i;

}

void printa()

{

System.out.println(x);

}

}

class B1 extends A1

{

int x=100;

void printb()

{

super.x = super.x +10 ;

System.out.println

14 / 44

("super.x= " + super.x +

" x= " + x);

}

}

public class Exam4_4Test

{

public static void main(String[] args)

{

A1 a1 = new A1();

a1.setx(4);

a1.printa();

B1 b1 = new B1();

b1.printb();

b1.printa();

b1.setx(6); // 将继承来的x值设置为6

b1.printb();

b1.printa();

a1.printa();

}

}

运行结果:

4

super.x= 12 x= 100

12

super.x= 16 x= 100

15 / 44

4

4方法的覆盖

如果子类不需要使用从父类继承来的方法的功能,则可以声明自己的方法。在声明的时候,使用相同的方法名及参数表,但执行不同的功能。这种情况称为方法覆盖。

5需要使用方法覆盖的情况

1)子类中实现与父类相同的功能,但采用不同的算法或公式。

2)在名字相同的方法中,要做比父类更多的事情。

6有继承时的构造方法应遵循的原则

●子类不能从父类继承构造方法。

●好的程序设计方法是在子类的构造方法中调用某一个父类构造方法。

●super关键字也可以用于构造方法中,其功能为调用父类的构造方法。

●如果在子类的构造方法的声明中没有明确调用父类的构造方法,则系统

在执行子类的构造方法时会自动调用父类的默认构造方法。

●如果在子类的构造方法的声明中调用父类的构造方法,则调用语句必须

是子类的构造方法的第一条语句。

7子类将继承父类所有的属性和方法吗?为什么?

8方法的覆盖与方法的重载有何不同?

9完成下面父类及子类的声明:

1)声明Student类

属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。

方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于)、sum方法(计算总成绩)和testScore方法(计算评测成绩)。

注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。

2)声明StudentXW(学习委员)类为Student类的子类。

在StudentXW类中增加责任属性,并重写testScore方法(计算评测成绩,评测成绩=三门课的平均分+3)。

3)声明StudentBZ(班长)类为Student类的子类。

在StudentBZ类中增加责任属性,并重写testScore方法(计算评测成绩,评测成绩=三门课的平均分+5)。

4)声明测试类,生成若干个Student类、StudentXW类及StudentBZ类对象,并

分别计算它们的评测成绩。

16 / 44

4.2OBJECT类

10Object类

Object类是Java程序中所有类的直接或间接父类,也是类库中所有类的父类,处在类层次的最高点。

11相等和同一

如果两个对象具有相同的类型及相同的属性值,则称两个对象相等(equal);如果两个引用变量指向的是同一个对象,则称这两个变量(对象)同一(identical)。

12Object类中的equals()方法的功能

Object类中的equals()方法的功能是比较接收者对象与参数对象是否是同一个对象,而不是判断两个对象各个属性域的值是否相同。

4.3终结类与终结方法

13终结类

如果一个类被final修饰符所修饰和限定,说明这个类不可能有子类,即final类不能有派生类。

被声明为final的类通常是一些有固定作用、用来完成某种标准功能的类,不能被继承以达到修改的目的。在Java程序设计中,当引用一个类或其对象时实际真正引用的既可能确是这个类或其对象本身,也可能是这个类的某个子类及子类对象,即具有一定的不确定性。将一个类声明为final,则可以将它的内容、属性和功能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现功能的正确无误。

14final类存在的两个理由

1)安全方面:黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们

的类代替原来的类。为了阻止各种颠覆活动,可以声明此类为final类,从而不

能派生任何子类。

2)设计方面:从面向对象设计方面,如希望声明的类为最终类,则最好或从概念

上讲该类不应该有任何派生类。

15终结方法

final修饰符所修饰的方法是功能和内部语句不能被更改的最终方法,即是不能被当前类的子类重载的方法。这样,就固定了这个方法所对应的具体操作,可以防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性。

17 / 44

将方法声明为final的另一个原因是提高类的运行效率。通常,当Java运行环境运行方法时,它将首先在当前类中查找该方法,接下来在其超类中查找,并一直沿类层次向上查找,直到找到该方法为止。这提供了灵活性和开发工作的容易程度,但代价是速度更低。如果方法是final的,Java编译器可以将该方法可执行的字节码直接放到调用它的程序中。这样当程序调用它们时,执行速度将更快。

4.4抽象类

16抽象类

抽象类不能用new方法进行实例化。当一个类被声明抽象类时,要在这个类前加修饰符abstract。

抽象类可以包含常规类能够包含的任何东西,这包括构造方法。抽象类也可以包括抽象方法,这种方法只有方法的声明,而没有方法的实现。抽象类也可以包含非抽象方法,但不能在非抽象类中声明抽象方法。

17为什么要声明抽象类?

1)抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承它的抽象

化特征;

2)在抽象类中可以包括被它的所有子类共享的公共行为;

3)抽象类可以包括被它的所有子类共享的公共属性;

4)在程序中不能用抽象类作为模板来创建对象;

5)在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性。

18抽象方法

作为类方法修饰符,abstract声明了一种仅有方法头,而没有具体的方法体和操作实现的抽象方法,为该类的子类声明一个方法的接口标准。

抽象方法体的具体实现是由当前类的不同子类在它们各自的类声明中完成的。

19抽象方法的优点

1)抽象方法可以隐藏具体的细节信息,使调用该方法的程序不必过分关注该类和

它的子类的内部状况。方法头里实际包含了调用该方法的程序语句所需要了解

的全部信息。

2)抽象方法强迫子类完成指定的行为,抽象类的所有非抽象子类都必须完成其父

类中声明的抽象方法,抽象类通常声明抽象方法规定其子类需要用到的“标准”

行为。

20编写一程序计算二维几何形体的面积,所涉及的几何形体至少应包括圆、三角形、矩形。(类层次结构图参见图4-11)

4.5类的组合

18 / 44

21组合

Java的类中可以有其它类的对象作为成员,这便是类的组合。可以使用“has a”语句来描述这种关系。

22组合与继承的比较

“包含”关系用组合来表达

如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择组合,我们需在新类里嵌入现有类的private对象。如果想让类用户直接访问新类的组合成分,需要将成员对象的属性变为public。

“属于”关系用继承来表达

取得一个现成的类,并制作它的一个特殊版本。通常,这意味着我们准备使用一个常规用途的类,并根据特定需求对其进行定制。

23组合与继承举例

class Plate { //声明盘子

public Plate(int i) {

System.out.println("Plate constructor");

}

}

class DinnerPlate extends Plate { //声明餐盘为盘子的子类

public DinnerPlate(int i) {

super(i);

System.out.println("DinnerPlate constructor");

}

}

class Utensil { //声明器具

Utensil(int i) {

System.out.println("Utensil constructor");

}

19 / 44

}

class Spoon extends Utensil { //声明勺子为器具的子类

public Spoon(int i) {

super(i);

System.out.println("Spoon constructor");

}

}

class Fork extends Utensil { //声明餐叉为器具的子类

public Fork(int i) {

super(i);

System.out.println("Fork constructor");

}

}

class Knife extends Utensil { //声明餐刀为器具的子类

public Knife(int i) {

super(i);

System.out.println("Knife constructor");

}

}

class Custom { // 声明做某事的习惯

public Custom(int i) { System.out.println("Custom constructor");} }

public class PlaceSetting extends Custom {//声明餐桌的布置

Spoon sp; Fork frk; Knife kn;

DinnerPlate pl;

public PlaceSetting(int i) {

20 / 44

04747java语言程序设计(一)20120年01月试卷

全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)

自考Java语言程序设计试题及答案解析

自考J a v a语言程序设计试题及答案解析 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡” 的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5 4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展

B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( )方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并调用start( )方法。 D.声明实现Runnable接口,在类内实现run( )方法,声明和创建线程对象,并让该对象调用start( )方法。 8.大多数采用缓冲式输入数据文件的程序的主要目的是 A.用readLine( )方法按行输入字符 B.提高输入速度 C.更快地读入字符数据 D.用read( )方法输入任意个字符 9.在打开文件对话框时,可用FileFilter类设置筛选条件,在以下供选择的方法中,是 FileFilter类预设的方法之一的是 A.setFileFilter( ) B.addFileFilter( ) C.accept( ) D.setDescription( ) 10.对访问数据库的Java程序来说,DriverManager类的作用是

2016年《高级语言程序设计》期末考试题及答案

2016年下半年《高级语言程序设计(高起 专)》期末考试试题 1. ( 单选题) 以下程序的输出结果是()。 main() {int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); } (本题2.0分) A、20 B、21 C、22 D、23 标准答案:B 2. ( 单选题) 有以下程序,输出结果是() float fun(int x,int y) { return(x+y); } main() {

int a=2,b=5,c=8; printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } (本题2.0分) A、9 B、21 C、9.0 D、编译出错 标准答案:A 3. ( 单选题) C语言程序的基本单位是()(本题2.0分) A、程序行 B、语句 C、函数 D、字符 标准答案:C 4. ( 单选题) 一个 C 程序的执行是从( )(本题2.0分) A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 标准答案:C 5. ( 单选题) 一个 C 语言程序是由( )(本题2.0分)

A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 标准答案:B 6. ( 单选题) 变量的指针,其含义是指该变量的()(本题2.0分) A、值 B、名 C、地址 D、一个标志 标准答案:C 7. ( 单选题) C语言提供的合法的数据类型关键字是_____(本题2.0分) A、Double B、short C、integer D、Char 标准答案:B 8. ( 单选题) 以下关于数组的描述正确的是( )(本题2.0分) A、数组的大小是可变的,可以有不同的类型的数组元素 B、数组的大小是固定的,所有数组元素的类型必须相同

Java语言程序设计课后习题答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、?Java运行平台包括三个版本,请选择正确的三项:( ) A. J2EE ????? B. J2ME C. J2SE? D. J2E 解答:A,B,C 2、JavaJDK中反编译工具是:() A.javac??B. java ?C. jdb ???D. javap 解答:D 3、?public staticvoid main方法的参数描述是:( ) A.String args[]??? B.String[] args C. Strings args[] ?? D.Stringargs 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B.编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为( )?A. .java??????B..class C. .html ??D..exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很

自考Java语言程序设计试题及答案解析

2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡” 的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5

4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展 B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( ) 方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并 调用start( )方法。 D.声明实现Runnable接口,在类内实现run( )方法,声明和创建线程对象,

高级语言程序设计期中试卷B

上海电机学院 2010–2011学年第 2 学期 《高级语言程序设计》期中考试试卷B 2011.5 开课学院:电子信息学院, 考试形式:闭卷, 所需时间 90 分钟 考生姓名: 学号: 班级 一、填空题(共20分,每空格1分) 1.将数学式b a x ) (sin 2转换成C 语言表达式 。 2.getchar 函数的作用是 。 3.C 语言程序的基本单位是函数。程序的执行总是从 开始。 4.在C 程序中,逻辑运算符的操作对象,用 表示“真”,用 表示“假”。在求逻辑值时,用 表示逻辑表达式值为“真”,用 表示逻辑表达式值为“假”。 5.执行 printf("%d\n",(int)(2.5+3.0)%2); 的输出结果是 。 6.C 语言提供的三种逻辑运算符为: 、 和 。 7.设整型变量 x 、y 、z 均为3:则 ①执行"x -=y+x"后,x = ②执行"x %=y +z"后,x = 8. 设有说明语句:int a=21, b=6; 则a/b 的十进制数值为________ 9. 设有说明语句:int x=3, y=2; 则计算表达式(x=5) || (y=6*x) 后变量y 的值是________ 10 设a,b,c,t 为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2后, t 的值是 11.结构化程序设计的三种基本结构是 结构, 结构和 结构。 12.设定义 int k=1,n=163;执行下面程序段后,k 的值是 。 do { k*=n%10; n/=10; } while(n); 二、选择题 (共17分,每小题1分) 1.表达式3/5的值为: ( ) A . 0 B . 0.6 C . 0.600000 D .1 2.表达式“9!=9”的值是 ( ) A . true B .非0值 C . 0 D .1 3.设ch 是char 型变量,其值为‘A ’,则下面表达式的值是 ( )

高级语言程序设计(C)模拟试题二

高级语言程序设计(C)模拟试题二 一、单项选择题(每题3分,合计60分) 1.自定义标识符中,符合C语言规定的是。 A. for B. 3a C. *a D. _123 2.为表示关系100≥x≥10,应使用C语言表达式。 A. (100>=x)&&(x>=10) B. (100>=x) AND (x>=10) C. (100>=x>=10) D. (100>=x)&(x>=10); 3.定义int a; float f; double i; 表达式15+i*f+ˊAˊ的值是。 A. float B. int C. char D. double 4.下面程序要求从键盘上输入值并打印,请选择正确的输入方法。 main( ) { int a,b; scanf("x=%d,y=%d",&x,&y); printf("x=%d,y=%d\n",x,y); } A. 5,6 B. x=5, y=6 C. 5↙6 D. 5 6 5.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是。 for(i=0;i<3;i++) printf("%d",x[i][2-i]); A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 6.在定义了 int a[3][2];之后,对a的引用正确的是。 A.a[3][2] B.a[3][0] C.a[0][0] D.a[0,0] 7.执行以下程序段后,m的值为。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=(*p)+(*(p+2))+(*(p+4)); A. 9 B. 8 C. 7 D. 6

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

2016年10月自考Java语言程序设计(一)04747

2016年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一)试卷 (课程代码 04747) 本试卷共9页,满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。 3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。 4.合理安排答题空间,超出答题区域无效。 第一部分选择题(共l0分) 一、单项选择题(本大题共l0小题,每小题l分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。淘宝店铺自考达人 V信1297755429 1.在下述字符串中,不是Java余言关键字的是 A.int B.static C.java D.try 2.要作下列数据类型转换,需进行强制类型转换才能实现的是 A.从int到char B.从int到 long C.从lloat到 double D.从byte到 int 3.在以下供选择的概念中,属于面向对象语言重要概念或机制的是 A.方法 B.模块 C.线程 D.继承 4.在下述Java程序代码中,能正确创建数组的是 A.int myA[5]={1,2,3,4,5); B.int myA[]=new int(5); C.int myA[];myA[]=new int[5]; D.int[]myA={1,2,3,4,5,6};5.某Java程序的类A需要利用Swin9创建无边框窗口,则A需要继承的类是A.JWindow B.JApplet C.JFrame D.JDialog 6.在以下供选的鼠标事件中,MouseMotionListener接口能处理的是 A.按下鼠标键 B.拖动鼠标 C.鼠标进入 D.鼠标松开7.在以下代码中,能正确创建Font对象的是 A.new Font(″宋体″,斜体,20); B.new Font(″楷体″,20,正常);C.new Font(″楷体″,Font.BOLD,l 8); D.new Font(″楷体″,1 8,Font.BOLD);8.某线程正处于运行状态,则在以下选项中,不可能是它的后继状态的是 A.就绪状态 B.新建状态 C.阻塞状态 D.死亡状态 9.某Java程序用类JFileChooser来实现打开和保存文件对话框。当对话框的返回 值是JFileChooser.APPROVE_OPTION时,程序进一步的工作是 A.用方法getName()取得文件名称 B.用方法getPathO()取得文件路径 C.用方法getFile()取得文件内容 D.用方法getSelectedFile()取得文件对象 10.Java语言实现C/S模式时,需要使用网络套接字,套接字的内容包括 A.IP地址+端口号 B.IP地址+监控线程名 C.监控线程名+端口号 D.IP地址+监控线程名+端口号 第二部分非选择题(共90分) 二、填空题(本大题共l0小题,每空2分,共20分) 11.一个Java小应用程序必须定义成一个子类,它的超类是______。 12.在Java语言中,左移运算符是______。 13.类A的成员变量x的类型是类B的,则类A和类B之间的关系是______。14.以下代码: 的输出结果是_______。 15.在JFrame子类的构造方法中,代码getContentPane0的作用是_______。16.用JScrollBar创建一个垂直滚动条对象时,需要指定的常量是_______。17.在异或模式下绘图时,实际绘制的颜色是由3种颜色作特定的运算确定的:当前正要绘 制的颜色、原先绘制的颜色以及_______。 18.处于运行状态的线程执行yield()方法,该线程将进入_______状态。 19.在Java语言中,客户端使用的套接字类是_______。 20.在Java语言中,DriverManager类的作用是加载驱动程序和_______。

高级语言程序设计练习题

(一)填空题: 1.C语言程序的基本单位是______________。 2.在C语言中,数字056是一个______________进制数,0xFF是一个______________进制数。 3.若程序中使用了函数scanf(),则必须包含的头文件名为。 4. 若程序中使用了函数strlen(),则必须包含的头文件名为。 5.C语言程序的三种基本结构是______________、______________、______________。 6.若程序中使用了函数sqrt(),则必须包含的头文件名为。 7.C语言中运算对象必须是整型的运算符是。 8.C语言中整型数据除以整型数据得到数据。 9.C语言源程序文件的扩展名是;经过编译后,所生成文件的扩展名是;经过链接后,所生成的文件扩展名是。 10. 若定义int a[3][5];则a数组所含数组元数个数是,sizeof(a)的值 是,其首地址是。 11.在C语言中,数组名是数组的,同时它是一个______ 常量。 12.判断字符型变量ch是否为小写英文字母的C语言表达式为____________________________。 13.判断变量a的数值范围1≤a≤10的C语言表达式是__________________ _________ _。 14.C语言运算符中,++和--的结合方向(运算方向)是___________________。 15.当用户输入的字符串含空格时,应使用 ___ 函数读入字符串。 16.函数直接或间接地调用自己本身称为_______________________。 17.已知w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)&&(b=y>z);后,a的值为,b的值为。 18.字符串"student"的长度是,它在内存中的字节数为。 19. 设a、b、c为整型数,且a=2,b=3,c=4,则执行语句"a*=16+(b++)-(++c);"后,a的 值是。 20.执行int x,y,z;x=y=1;z=(x++,++y,y++);后, 则x= ,y= ,z= 。 21.定义语句int x,y;,执行y=(x=1,++x,x+2);语句后,则x= ,y= 。 22. 执行下列语句int a=2;a+=a-=a*a; 后,a的值是。 23.设函数外有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是 _ _ _。

高级语言程序设计--编写程序题+答案

1已知银行整存整取存款不同期限的月息利率分别为: 0.315% 期限一年 0.330% 期限二年 月息利率=0.345% 期限三年 0.375% 期限五年 0.420% 期限八年 要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。 2输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。 3编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。 4输入n值,输出如图所示矩形。 5输入n值,输出如图所示平行四边形。 6输入n值,输出如图所示高为n的等腰三角形。

7输入n值,输出如图所示高为n的等腰三角形。 8输入n值,输出如图所示高和上底均为n的等腰梯形。 9输入n值,输出如图所示高和上底均为n的等腰空心梯形。 10输入n值,输出如图所示边长为n的空心正六边型。 11输入n值,输出如图所示图形。

12输入n值,输出如图所示图形。

13输入n值,输出如图所示图形。 14输入n值,输出如图所示图形。 15输入n值,输出如图所示图形。

16输入n值,输出如图所示图形。(例为n=6时) 17编写程序,输出如图所示sin(x) 函数0到2π的图形。 18编写程序,在屏幕上输出一个由*号围成的空心圆。 19编写程序,在屏幕上绘制如图余弦曲线和直线。若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。其中cos图形用"*"表示,f(y)用"+"表示,在两个图形的交点处则用f(y)图形的符号。

java语言程序设计课后习题答案

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ;

《高级语言程序设计》期末试题-刘坤良

天津工业大学计算机科学与软件学院 班级学号姓名 注意事项:1、本试卷共10 页,满分为100 分,考试时间为100分钟。 2、答题时请使用蓝、黑钢笔或圆珠笔,不得使用红颜色墨水笔。 除特殊要求外不得使用铅笔。 题目一二三四五总分分数核对 得分 阅卷人 答题纸部分(A1) 一、单项选择题:(每题 2 分,共20 分) (说明:将答案字母填写在答题纸中) 分数 1 2 3 4 5 6 7 8 9 10 二、填空题:(每空 2 分,共32 分) (说明:将答案填写在答题纸中) 分数 填空号答案填空号答案 (1)(2) (3)(4) (5)(6) (7)(8)

(9)(10) (11)(12) (13)(14) (15)(16) 分数三、阅读程序,写出程序输出结果:(每题 4 分,共20 分) (说明:将答案填写在答题纸中) (1)(2) (3)(4) (5) 分数四、程序填空:(每空 2 分,共 6 分) (说明:将答案填写在答题纸中)

填空号答案填空号答案 (1)(2) (3) 分数五、程序设计题:(共 2 题,共22 分) (说明:将答案填写在答题纸中)

试题部分(A1) 说明:将所有题目的答案均填写在前面的答题纸中!! 分数 一、单项选择题:(每题 2 分,共20 分) (说明:将答案填写在答题纸中) 1. 一个C程序的组成部分可以是。 A.一个主函数和一至若干个其他函数B.一至若干个主函数 C.一个主程序和一至若干个其他函数 D.一个主程序和一至若干个子程序 2. 以下叙述正确的是。 A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句 D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.一个C程序的执行是从。 A.本程序的main函数开始,到main函数结束 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序main函数结束 4.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。 A.必须为字母B.必须为下划线 C.必须为字母或下划线 D.可以是字母、数字和下划线中任一种字符 5.设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是。 A.3B.0C.9D.-12 6. 若int i=10,执行下列程序: switch(i) {case9:i+=1; case10: case11:i-=1; default:i+=1; } 则变量i的结果是。

《高级语言程序设计》期末考试试卷附答案

《高级语言程序设计》期末考试试卷附答案 一、选择题(共20题,每题3分,共60分) 1. 下列四个选项中,均是合法的整型常量的选项是() A.160 –0XFFFF 011 B. -0XCDF 01A 0XE C. -01 986,012 0688 D. -0X48a 2e5 0x 2. 下列四个选项中,均是不合法的浮点数的选项是() A.160.0.12 e3 B. 123 2e4.2 .e5C.18 0.0 123e4 D. e3. 234 1e3 3. 合法的C语言字符常数是() A.'\t' B. "A"C.54 D. A 4. 在C语言中,要求运算数一定是整型的运算符是() A./ B. ++C.!= D. % 5. 字符串常量”mine”的字符个数是() A.4 B. 5C.6 D. 7 6. 以下属于非法的C语言转义字符的是() A.'\b' B. '0xf'C.'\037' D. '\' 7. 若x、y、z均为int型变量,则执行以下语句后的输出是() x=(y=(z=10)+5)-5; printf("x=%d, y=%d, z=%d\n",x,y,z); y=(z=x=0,x+10); printf("x=%d, y=%d, z=%d\n",x,y,z); A. x=10, y=15, z=10 B.x=10, y=10, z=10 x=0, y=10, z=0x=0, y=10, z=0 C.x=10, y=15, z=10 D. x=10, y=10, z=10 x=10, y=10, z=0 x=10, y=10, z=0 8. 在以下一组运算符中,优先级最高的运算符是() A.<= B. =C.% D. && 9. 已知:int x; float y; 所用的scanf调用语句格式为: scanf( “x=%d, y=%f”, &x, &y ); 为了将数据10和66.6分别赋给x和y,正确的输入应当是() A.x=10, y=66.6<回车> B. 10, 66.6<回车> C.10<回车>66.6<回车> D. x=10<回车>y=66.6 <回车> 10. 已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开

《Java语言程序设计基础教程》

第1章 Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为___编辑源程序____、______编译生成字节码______和_____解释运行字节码____。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是_Applet_类的子类并且存储该源程序文件的文件名为_MyApplet.java_。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生_3_个文件名与类名相同而扩展名为_.class_的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 答:1编写Java源文件:使用文本编辑器(edit或记事本),拓展名为.java

高级语言程序设计练习题2015

《高级语言程序设计》练习题 一.填空题 1. 以下条件表达式可计算1+|a|的值,填空完成语句:a>=0 ?(1+a ):( 1-a ) 2. 函数max 定义的首部为:int max(int x[],int n),该函数完成实现寻找长度为n 的数组x 中的最大元素。若在主函数中有定义:int c,a[10];并要求函数调用后,变量c 存放数组a 中的最大元素,则函数调用语句应为:( c=max(a,10) ) 3. 若有int i=5; 则循环语句while(i > = 1) i - -;执行后,i 的值为 ( 0 )。 4. 能正确表示逻辑关系:“0≤a <10”的C 语言表达式是( a>=0&&a<10 )。 5. 设int a[2][3] = {{2},{3}};则数组元素(a[1][0] )的值为3。 6. 表达式 (int)(3.0/2.0)的值是( 1 )。 7. 有定义: int x=3, y=2; 执行x/=y+1; 语句后x 的值为( 1 ) 。 8. 有定义: int x=2, y=0; 表达式 (!x||y) 的值为( 0 )。 9. 有定义:int i=5; 则循环语句while(i>=1) i=i-2; 执行后变量i 的值为( -1 )。 10. 已知 ‘A ’~ ‘Z ’ 的ASCII 码为65~90,当执行int x= ‘D ’+5; 语句后x 的值为( 73 )。 11. 如果在调用一个函数过程中,又调用另一个函数,称为函数的( 嵌套 )调用。如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的(递归 )调用。 12. 若有语句:int b[][2]={1,2,3}; 则数组b 的元素a[1][1]的值是( 0 )。 13. 能正确表示数学表达式) (2c b c a +的C 语言表达式是( 2a/(c*(b+c)) )。 二. 选择题(在每题的四个备选答案中,选出一个正确的答案) 1. 以下不能定义为变量名的是:B (A) sanf (B) void (C) _2com (D) Go 2. 以下选项中非法的字符常量是:B (A) ‘\\’ (B)‘\181’ (C) ‘0’ (D) ‘\xAA ’ 3. 有以下程序: int main() D { int k=2,i=2,m ; m=i*=k++; printf(“%d,%d\n”,m,i);

全国高等教育自学考试Java语言程序设计完整版

全国高等教育自学考试 J a v a语言程序设计 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

全国2008年10月高等教育自学考试 Java?语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述字符组合不能作为Java程序标识符的是()A.Aa12? B.大x C.y小? D.5x 2.以下程序代码的输出的结果是() int?x=53; System.out.println+x/2); A. B.

C. D.参照以下Java代码,以下四个叙述中最确切的是()class A{ int x; static int y; void fac(String s){Syatem. out. println("字符串:"+s);} } A.x、y和s都是成员变量 B.x是实例变量、y是类变量、s是局部变量 C.x和y是实例变量、s是参数 D.x、y和s都是实例变量 4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使 用java. util包中的类是() A.String B.StringBuffer C.StringTokenizer

D.stringTokenizer 5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是() A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 6.以下关于菜单的叙述中,正确的是() A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项 D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项

相关主题
文本预览
相关文档 最新文档