当前位置:文档之家› java面向对象程序设计(戴开宇译版)课本知识整理

java面向对象程序设计(戴开宇译版)课本知识整理

java面向对象程序设计(戴开宇译版)课本知识整理
java面向对象程序设计(戴开宇译版)课本知识整理

第一章计算机、程序和java概述

1.程序设计就是创建(或者开发)软件,软件也称为程序。

2.计算机是存储和处理数据的电子设备。计算机包括硬件和软件两部分。

3.一台计算机是由以下几个主要的硬件组件构成的:中央处理器(CPU),内存(主存),存储设备(例如磁盘和光盘),输入设备(例如鼠标和键盘),输出设备(例如显示器和打印机),通信设备(例如调制解调器和网卡)

4.数据和电信号通过总线在计算机的各个部分之间传输。

5.中央处理器(CPU)是计算机的大脑。他从内存中获取指令,然后执行这些指令。CPU 通常由两部分组成:控制单位和算术/逻辑单元。控制单元用于控制和协调其他组件的动作。算术/逻辑单元用于完成数值运算(加减乘除法)和逻辑运算(比较)。

6.核是处理器中实现指令读取和执行的部分。

7.二进制数字系统中的数,称为比特(bit,二进制数)

8.计算机中字节(byte)是最小的存储单位。每个字节由8个比特构成。各种类型的数据(例如,数字和字符)都被编码成字节序列。

9.计算机的存储能力是以字节和多字节来衡量的。KB

10.计算机的内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。

11.每个字节都有一个唯一的地址,使用这个地址确定字节的位置,以便于存储和获取数据。因为可以按任意顺序存取字节,所以内存也被称为随机访问存储器。

12.计算机的内存是一种易失的数据保存形式,程序和数据被永久的存放在存储设备上。但是从内存中读取比从存储设备读取要快得多。

13.存储设备主要有以下三种类型:磁盘驱动器、光盘驱动器、USB闪存驱动器。

14.驱动器是对存储介质(例如,磁盘和光盘)进行操作的设备。存储介质物理的存储数据和程序指令。驱动器从介质读取数据并将数据写在介质上。

15.硬盘用于永久的存储数据和程序。CD指光盘,有三种CD:只读光盘驱动器、可录光盘、和可复写光盘。可以将数据写到光盘上,然后用新的数据覆盖掉这些数据。

16.DVD指数字化多功能光盘或者数字化视频光盘。(类型有:可录和可复写)一张DVD上可以保存的信息要比一张CD上可以保存的信息多。

17.通用串行总线(USB)接口允许用户将多种外部设备连接到计算机。

https://www.doczj.com/doc/3112836564.html,B闪存驱动器是用于存储和传输数据的设备。

19.输入设备和输出设备让用户可以和计算机进行通信。最常用的输入设备是键盘和鼠标,而最常用的输出设备是显示器和打印机。

20.计算机程序称为软件,是告诉计算机该做什么的指令。

21.计算机的原生语言就是机器语言。

22.汇编语言使用短的描述性单词(称为助记符)来表示每一条机器语言指令。汇编语言的出现降低了程序设计的难度。但是需要使用一种称为汇编器的程序将汇编语言程序转换为机器代码。

23.高级语言中的指令称为语句。

24.用高级语言编写的程序称为源程序或源代码。由于计算机不能运行源程序,源程序必须被翻译为可执行的机器代码。翻译可以由另外一种称为解释器或者编译器的编程工具来完成。

25.解释器从源代码中读取一条语句,将其翻译为机器代码或者虚拟机器代码,然后立刻运行,注意来自源代码的一条语句可能被翻译为多条机器指令。

26.编译器将整个源代码翻译为机器代码文件,然后执行该机器代码文件。

27.操作系统是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动。

28.操作系统的主要任务:控制和监视系统活动、分配和调配系统资源、调度操作。

29.多道程序设计、多线程、多处理。多道程序设计允许多个程序通过共享同一个CPU同时运行。多线程允许单个程序同时执行多个任务。多处理类似多线程。区别在于多线程是在单个程序中并行运行多个线程,而多处理是采用多个处理器来并行运行多个程序。

30.J ava是简单的、面向对象的、分布式的、解释型的、健壮的、安全的、体系结构中立的、可移植的、高性能的、多线程的和动态的。

31.JDK由一组独立程序构成,每个程序都是从命令行调用的,用于编译、运行和测试java 程序。运行java程序的程序称为JRE。

32.J ava是从类中的main方法开始执行的。

33.类名都是以大写字母开头的。main方法是程序开始执行的入口。方法是包含语句的结构体。分号(;)称为语句结束符。

34.保留字或关键字对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。

35.注释帮助程序员进行相互沟通以及理解程序。有行注释、块注释、java文档注释。

36.J ava源程序是区分大小写的。

37.J ava源程序保存为 .java文件,编译为.class文件。Class文件由Java虚拟机(JVM)执行。

38.源文件的扩展名必须是.java文件,而且文件名必须与公共类名完全相同。

39.J ava编译器将java源文件翻译成java字节码文件。Javac Welcome.java用来编译Welcome.java。

40.J ava程序开发过程由重复的创建/修改源代码、编译和执行程序组成。

41.在编译和运行程序前必须先安装和配置JDK,编译器会生成扩展名为.class的字节码文件。

42.虚拟机不是物理机器,而是一个解释java字节码的程序。Java字节码可以在不同的硬件平台和操作系统上运行。Java源代码编译成java字节码,然后java字节码被JVM解释执行。

43.执行java程序就是运行程序的字节码,可以在任何一个装有JVM的平台上运行字节码,JVM就是解释器。它一次只将字节码中的一个指令翻译为目标机器语言代码,而不是将整个程序作为一个单元。翻译完一步之后就立即执行这一步。Java Welcome命令用来运行字节码。

44.在运行一个Java程序时,JVM首先会用一个称为类加载器的程序将类的字节码加载到内存中。当加载该类后,JVM使用一个称为字节码验证器的程序来检验字节码的合法性,确保字节码没有违反java的安全规范。

45.良好的程序设计风格和正确的文档使程序更易阅读,并且能帮助程序员避免错误。程序设计风格决定程序的外观。文档是一个关于程序的解释性备注和注释的结构体。

46.缩进用于展示程序中组成部分或语句之间的结构性关系。

47.程序设计错误可以分为三类:语法错误、运行时错误和逻辑错误。

48.在编译过程中由编译器检测出来的错误称为语法错误或编译错误。

49.运行时错误是引起程序非正常终止的错误。输入错误是典型的运行时错误。

50.当程序没有按预期的方式执行时就会发生逻辑错误。

第二章基本程序设计

1.算法描述的是如果要解决一个问题,所需要的执行的动作以及这些动作的执行顺序。算法可以帮助程序员在使用程序设计语言编写程序之前进行规划。算法可以用自然语言或者伪代码(即自然语言和程序设计代码混在一起使用)描述。

2.变量代表存储在计算机内存中的一个值。每个变量都有名字、类型、大小和值。直到给

它赋一个数值时,该变量才被定义。

3.在源代码中,字符串常量不能跨行。

4.从控制台读取输入,使得程序可以从用户处获得输入。

5.调用对象的方法就是让这个对象执行某个任务。

6.有两种类型的import语句:明确导入(指定单个的类)和通配符导入(使用*作为通配符,导入一个包里的所有类)。声明明确导入和声明通配符导入在性能上是没有什么差别的。

7.标识符是为了标识程序中诸如类、方法和变量等元素而采用的命名。标识符命名规则:(1)标识符是由字母、数字、下划线和美元符号构成的字符序列。(2)标识符必须以字母、下划线或美元符号开头,不能以数字开头。(3)标识符不能是保留字。(4)标识符不能是true、false或null。(5)标识符可以为任意长度。

8.标识符用于命名程序中的变量、方法、类和其他项。具有描述性的标识符可提高程序的可读性。不要用字符$命名标识符。习惯上,字符$只用在机器自动产生的源代码中。

9.变量用于表示程序中可能被改变的值。变量用于表示某种类型的数据。变量声明通知编译器根据数据类型为变量分配合适的内存空间。

10.在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被赋值。每个变量都有使用范围,变量的使用范围是指可以引用该变量的程序部分。

11.赋值语句将一个值指定给一个变量。要给一个变量赋值,变量名必须在赋值操作符的左边。

12.表达式表示包含值、变量和操作符的一次计算。赋值语句也称为赋值表达式。在赋值语句中,左边变量的数据类型必须与右边值得数据类型兼容。

13.命名常量是一个代表不变值的标识符。常量必须在同一条语句中声明和赋值。使用常量的好处:1)当一个值多次使用的时候,不必重复输入;2)如果必须修改常量值(例如,将PI的值从3.14改为3.14159),只需在源代码中的一个地方做改动;3)给一个常量赋一个描述性名字会提高程序的易读性。

14.使用小写字母命名常量和方法。驼峰命名法。类名中的每个单词的首字母大写。常量中的所有字母大写。

15.操作数是被操作符操作的数。(就是计算的数字)

16.字面值是程序中直接出现的常量值。为了表示一个long型的整型字面值,需要在其后加字母L或l。

17.为了提高可读性,java允许在一个数值型字面值的两个数字之间使用下划线。下划线必须置于两个数字之间。

18.浮点数在计算机内部都是以科学计数法的形式进行存储的。

19.Java表达式的求值和数学表达式求值是一样的。

20.可以通过调用System.currentTimeMillis()返回当前时间。获得一个long类型的以毫秒为单位的当时时间值。

21.通过显式转换,浮点数可以被转换为整数。总是可以将一个数值赋给支持更大数值范围的类型的变量。

22.类型转换是将一种数据类型的值转换为另一种数据类型的值的操作。将范围较小的类型转换为范围较大的类型称为扩展类型,反之则称为缩小类型,但是缩小类型必须显示完成。

23.类型转换不改变被转换的变量(double d = 4.5; int i = (int)d; d在类型转换之后值不变)。

24.只要整型字面值是在目标变量允许的范围内,那么将整型字面值赋给short型或byte 型变量时,就不需要显式的类型转换(int i = 1; byte b = i;)。

25.软件开发生命周期是一个多阶段的过程,包括需求规范、分析、设计、实现、测试、部

署和维护。开发软件产品是一个工程过程。

26.需求规范是一个规范化的过程,旨在理解软件要处理的问题,以及将软件系统的功能详细记录到文档中。系统分析旨在分析数据流,并且确定系统的输入和输出。实现是将系统设计翻译成程序。实现也称为编码(编写代码)。测试确保代码符合需求规范。部署使得软件可以被使用。维护是对软件产品进行更新和改进。

27.为变量选择最合适的数据类型。

28.将一个double型的数转换为int型的数可能会损失精度,会导致不精确的结果。

29.常见的基础编程错误经常涉及未声明变量、未初始化变量、整数溢出、非预期的整数除法,以及数值取整错误。

30.变量必须在使用之前声明为一个类型并且赋值。

31.Java不会给出关于溢出的警告或者错误。

32.舍入错误是指计算得到的数字的近似值和确切的数字值之间的差异。涉及浮点数的计算都是近似的,因为这些数没有以准确的精度来存储。

第三章选择

1.程序可以基于条件决定执行哪些语句。

2.boolean数据类型声明一个具有值为true或者false的变量。

3.if语句是一个构造,允许程序确定执行的可选路径。

4.流程图是描述算法或者过程的图,以各种盒子显示步骤,并且通过箭头连接它们给出顺序。

5.if-else语句根据条件是真或者是假,决定执行的路径。

6.if语句可以在另外的一个if语句中,形成嵌套的if语句。嵌套的if语句可用于实现多重选择。

7.在同一个块中,else总是和离它最近的if子句匹配。

8.浮点数具有有限的计算精度;涉及浮点数的计算可能引入舍入错误。

9.去掉重复代码,使得代码更加易于维护。

10.System.exit(status)是在System类中定义的,调用这个方法可以终止程序。参数status为0表明程序正常结束。一个非0的状态代码表示非正常结束。

11.对所有代码都应该先编写少量代码然后进行测试,之后再继续添加更多的代码。这个过程称为递进式开发和测试。

12.逻辑操作符!、&&、||、和^可以用于产生复合布尔表达式。在编程术语中,&&和||被称为短路或者条件操作符。

13.逻辑操作符也称为布尔操作符,是对布尔值进行的运算,它会创建新的布尔值。

14.如果某年可以被4整除而不能被100整除,或者可以被400整除,那么这一年就是闰年。

15.Switch语句基于变量或者表达式的值来执行语句。过多的使用嵌套的if语句会使程序很难阅读。Java提供switch语句来有效地处理多重条件的问题。

16.Switch语句里面的表达式不能包含变量。

17.一旦匹配其中一个case,就从匹配的case处开始执行,直到遇到break语句或到达switch语句的结束。这种现象称为落空行为。

18.条件操作基于一个条件计算表达式的值。

19.操作符的优先级和结合规则确定了操作符计算的顺序。

20.除了赋值操作符以外,所有的二元操作符都是左结合的。

21.调试是在程序中找到和修改错误的过程。逻辑错误也称为臭虫(bug)。查找和改正错误的过程称为调试。调试:1)一次执行一条语句。2)跟踪进入或者一步运行一个方法。3)

设置断点。4)显示变量。5)显示调用堆栈。6)修改变量。

第四章数学函数、字符和字符串

1.方法是一组语句,用于执行一个特定的任务。

2.Math类在程序中使用,但是并没有导入,因为它在https://www.doczj.com/doc/3112836564.html,ng包中。在一个java程序中,https://www.doczj.com/doc/3112836564.html,ng包中的所有类都是隐式导入的。

3.字符数据类型用于表示单个字符。

4.将字符映射到它的二进制形式的过程称为编码。

5.字符串字面值必须括在双引号中。而字符字面值是括在单引号中单个字符。因此”A”是一个字符串,而’A’是一个字符。

6.转义序列由反斜杠(\)后面加上一个字符或者一些数字位组成。一个转义序列被当做一个字符。反斜杠\被称为转义字符。

7.要将浮点值转换成char型时,首先将浮点值转换成int值,然后将这个整型值转换成char型。

8.0~FFFF的任何一个十六进制正整数都可以隐式的转换为字符型数据。而不在此范围内的任何其他数值都必须显式的转换为char型。

9.所有数值操作符都可以用在char型操作数上。

10.字符串是一个字符序列。String实际上与System类和Scanner类一样,都是java库中一个预定义的类。String类型不是基本类型,而是引用类型。任何java类都可以作为引用类型来声明一个变量。使用引用类型声明的变量称为引用变量,它引用一个对象。

11.String是java中的对象。

12.方法只能从一个特定的字符串实例来调用。由于这个原因,这些方法称为实例方法。非实例方法称为静态方法。静态方法可以不使用对象来调用。定义在Math类中的所有方法都是静态方法。它们没有绑定到一个特定的对象实例。

13.Java允许在不创建新变量的情况下,使用字符串字面量直接引用字符串。

14.增强的+=操作符也可以用于字符串连接。

15.方法trim()通过删除字符串两边的空白字符返回一个新字符串。字符’ ’、\t、\f、\r或者\n被称为空白字符。

16.next()、nextByte()、nextInt()、nextFloat()、nextDouble()、nextLong()的输入称为基于标记的输入,因为它们读取采用空白字符分隔的单个元素,而不是读取整行。nextLine()方法称为基于行的输入。

17.==只能检测是否指向同一个对象,无法告诉是否内容相同。

18.方法compareTo返回的实际值是依据s1和s2从左向右第一个不同字符之间的距离得出的。会返回0、正整数或负整数。

19.可以将数值型字符串转换为数值使用Integer.parseInt()方法。

20.格式限定符指定每项应该如何显示。项与格式限定符必须在顺序、数量和类型上匹配。

21.如果项需要比指定宽度更多的空间,宽度自动增加。

22.如果要显示一个带有逗号的数字,可以在数字限定符前面添加一个逗号。

23.如果要在数字前面添加0而不是空格来凑齐位数,可以在一个数字限定符前面添加0。

24.默认情况下,输出是右对齐的。可以在格式限定符中放一个减号(-),指定该项在指定域中的输出是左对齐的。

25.要在格式字符串里输出字面值%,需要使用%%。

第五章循环

1.循环可以用于让一个程序反复的执行语句。

2.循环是用来控制语句块重复执行的一种构造。循环的概念是程序设计的基础。

3.循环中包含的重复执行的语句部分称为循环体。每个循环都含有循环继续条件,循环继续条件是一个布尔表达式,控制循环体的执行。

4.确切知道循环体需要执行的次数,这种类型的循环称为计数器控制的循环。

5.差一错误:使循环多执行一次或少执行一次。

6.设计循环的关键是确定需要重复执行的代码,以及编写结束循环的条件代码。

7.使用标记值来结束输入是一种通常的做法。

8.标记位控制的循环:在读取和处理一组值时指定一个特殊值,这个特殊的输入值也称为标记值,用以表明循环的结束。

9.输入重定向:程序从文件中读取输入。输出重定向:将输出发送给文件。

10.While和do-while循环的不同之处在于:计算循环继续条件和执行循环体的先后顺序不同。

11.一般情况下,for循环使用一个变量来控制循环体的执行次数,以及什么时候循环终止。这个变量称为控制变量。

12.如果在循环控制结构体内声明变量,那么在循环外不能引用它。

13.如果省略for循环中的循环继续条件,则隐含的认为循环继续条件为true。

14.for循环将控制变量初始化、循环继续条件以及每次迭代之后的调整放在一起。它会更加简洁,并且相比另外两种循环而言更容易避免出错。

15.While和for循环都称为前测循环,do-while循环称为后测循环。

16.如果已经提前知道重复次数,那就采用for循环。如果无法确定重复次数,就采用while 循环。

17.一个循环可以嵌套在另一个循环中。嵌套循环是由一个外层循环和一个或多个内层循环组成的。

18.在循环继续条件中使用浮点数将导致数值错误。因为计算机使用固定位数表示浮点数,因此,它就不能精确表示某些浮点数。根本问题就是浮点数是用近似值表示的。先加较小数再加较大数是减少误差的一种办法。

19.Java中的break语句和continue语句是不同于goto语句的。它们只能运行在循环中或者switch语句中。Break语句跳出整个循环,而continue语句跳出循环的当前迭代。20.设计编程解决方案来解决这个问题或其他很多问题的关键之处在于要把问题分解成子问题,然后逐个地设计出每个子问题的解决方案。

第六章方法

1.方法可以用于定义可重用的代码以及组织和简化编码。

2.方法是为完成一个操作而组合在一起的语句组。方法的定义由方法名称、参数、返回值类型以及方法体组成。

3.方法头是指方法的修饰符、返回值类型、方法名和方法的参数。如果方法有返回值,则称为带返回值的方法,否则就称这个方法为void方法。

4.定义在方法头中的变量称为形式参数或者简称为形参,参数就像占位符。

5.参数列表指明方法中参数的类型、顺序和个数。方法头和参数列表一起构成方法签名。

6.方法体中包含一个实现该方法的语句集合。

7.在其他某些语言中,方法称为过程或函数。这些语言中,带返回值的方法称为函数,返回值类型为void的方法称为过程。

8.方法的调用是指执行方法中的代码。

9.如果方法返回一个值,对方法的调用通常就当做一个值处理。

10.如果方法返回void,对方法的调用必须是一条语句。例如,println方法返回void。

11.在java中,带返回值的方法也可以当做语句调用。这种情况下,函数调用者只需忽略返

回值即可。

12.Main方法与其他方法很类似,区别在于它是由java虚拟机调用从而启动程序的。main 方法的方法头是不变的。

13.当调用max方法时,控制流程转给max方法。一旦max方法结束,将控制返还给调用者。

14.方法能够带来代码的共享和重用。

15.调用栈以后进先出的方式来保存活动记录。理解调用栈有助于理解方法是如何调用的。

16.Return语句对于void方法不是必需的,但它能用于终止方法并返回到方法的调用者,对于改变void方法中的正常控制流程是很有用的。

17.调用方法的时候是通过传值的方式将实参传给形参的。方法的强大之处在于他处理参数的能力。实参必须与方法签名中所对应的形参次序相同,称为参数顺序匹配。

18.将变量中的值传递给形参,无论形参在方法中是否改变,该变量都不受影响。

19.形参是方法中具有自身存储空间的变量。局部变量是在调用方法时分配的,当方法返回到调用者后它就消失了。

20.模块化使得代码易于维护和调试,并且使得代码可以被重用。

21.使用方法可以减少冗余的代码,提高代码的复用性。方法也可以用来模块化代码,以提高程序的质量。

22.封装:1)使逻辑更加清晰而且程序的可读性更强。2)缩小了调试的范围。3)其他代码可以重用。

23.重载方法使得你可以使用同样的名字来定义不同的方法,只要他们的参数列表是不同的。

24.调用方法时,Java编译器查找最精确匹配的方法。

25.重载方法可以使得程序更加清楚,以及更加具有可读性。执行同样功能但是具有不同参数类型的方法应该使用同样的名字。

26.被重载的方法必须具有不同的参数列表。不能基于不同修饰符或返回值类型来重载方法。

27.变量的作用域是指变量可以在程序中被引用的范围。

28.在方法中定义的变量称为局部变量。局部变量的作用域是从变量声明的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。

29.参数实际上就是一个局部变量。可以在一个方法中的不同块里声明同名的局部变量。但是不能在嵌套块中或同一块中两次声明同一个局部变量。

30.所有数字操作符都可以应用到char操作数上,如果另一个操作数是数字或字符,那么char型操作数就会被转换成数字。

31.开发软件的关键在于应用抽象的概念。

32.方法抽象是通过将方法的使用和它的实现分离来实现的。

33.方法的实现细节封装在方法内,对使用该方法的用户来说是隐藏的。这就称为信息隐藏或封装。

34.逐步求精的优势:逐步求精将一个大问题分解为小的易于处理的子问题。这种方法使得问题更加易于编写、重用、调试、修改和维护。1)更简单的程序2)重用方法3)易于开发、调试和测试。4)更方便团队合作。

第七章一维数组

1.单个的数组变量可以引用一个大的数据集合。一旦数组被创建,它的大小是固定的。使用一个数组引用变量和下标来访问数组中的元素。

2.为了使用数组,必须声明一个引用数组的变量,并指明数组的元素类型。数组中的所有元素都必须具有相同的数据类型。

3.不同于声明基本数据类型变量,声明一个数组变量时并不给数组分配任何内存空间。

4.一个数组变量看起来似乎是存储了一个数组,但实际上它存储的是指向数组的引用。

5.当创建数组后,它的元素被赋予默认值,数值型基本数据类型的默认值为0,char型的默认值为’\u0000’, boolean型的默认值为false。

6.使用数组初始化简写方式时,必须将声明、创建和初始化数组都放在一条语句中。

7.对于char[]类型的数组,可以使用一条打印语句打印。(例如:char[] city = {‘D’, ‘a’, ‘l’, ‘l’, ‘a’, ‘s’}; System.out.println(city);)

8.foreach循环,不使用下标变量就可以顺序的遍历整个数组。for (double e: myList){System.out.println(e);}变量e必须声明为与myList中的元素相同的数据类型。

9.arraycopy方法没有给目标数组分配内存空间。复制前必须创建目标数组以及分配给它的内存空间。

10.当将一个数组传递给方法时,数组的引用被传给方法。

11.如果没有显式的引用变量,这样的数组称为匿名数组。

12.数组在java中是对象,JVM将对象存储在一个称为堆的内存区域中,堆用于动态内存分配。

13.当方法返回一个数组时,数组的引用被返回。

14.具有同样类型的数组可变的参数可以传递给方法,并将作为数组对待。可以把类型相同但是数目可变的参数传递给方法。在方法声明中,指定类型后紧跟着省略号(...)。同时该参数必须是最后一个参数。任何常规参数必须在它之前。

15.查找数组中的一个元素,二分查找比线性查找更加高效。

16.查找是在数组中寻找特定元素的过程。

17.线性查找法将要查找的关键字key与数组中的元素逐个进行比较。

18.使用二分查找法的前提条件是数组中的元素已经排好序。

19.线性查找法适用于在较小数组或没有排好序的数组中查找,但是对于数组而言效率不高。二分查找法的效率较高,但它要求数组已经排好序。

20.E quals方法检测两个数组是否严格相等(顺序和数值)。如果它们对应的元素都相等,那么这两个数组严格相等。可以使用fill方法填充整个数组或部分数组。

21.main方法可以从命令行接收字符串参数。当调用main方法时,java解释器会创建一个数组存储命令行参数,然后将该数组的引用传递给args。

22.该数组是长度为0的空数组。Args是对这个空数组的引用。因此,args不是null,但是args.length为0。

第八章多维数组

1.可以使用二维数组存储矩阵或表。二维数组中的元素通过行和列的下标来访问。每个下标必须放到一个方括号中。

2.二维数组实际上是一个其中每个元素都是一个一维数组的数组。数组x的长度是数组中元素的个数,可以用x.length获得该值。二维数组是一个一维数组,它的每个元素是另一个一维数组。

3.使用语法new int[5][] 创建数组时,必须指定第一个下标。

4.嵌套的for循环常用于处理二维数组。

5.将一个二维数组传递给方法时,数组的引用传递给了方法。

第九章对象和类

1.面向对象编程使得大型软件及图形用户界面的开发变得更加高效。面向对象编程实质上是一种开发可重用软件的技术。

2.类为对象定义属性和行为。面向对象程序设计就是使用对象进行程序设计。

3.对象代表现实世界中可以明确标识的一个实体。每个对象都有自己独特的标识、状态和

行为。一个对象的状态也称为特征或属性是由数据域及其当前值来表示的。一个对象的行为也称为动作是有方法定义的。调用对象的一个方法就是要求对象完成一个动作。

4.使用一个通用类来定义同一类型的对象。类是一个模板、蓝本或者合约,用来定义对象的数据域以及方法。对象是类的实例。可以从一个类中创建多个实例。创建实例的过程称为实例化。对象和实例经常是可以互换的。

5.Java类使用变量定义数据域,使用方法定义动作。构造方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化的动作,例如初始化对象的数据域。

6.包含main方法的类称为主类。

7.类定义了对象,对象是从类创建的。

8.使用类的程序通常称为该类的客户。

9.可以把两个类放在同一个文件中,但是文件中只能有一个类是公共类。此外,公共类必须与文件同名。

10.源代码中的每个类编译成.class文件。

11.构造方法的特殊之处:1)构造方法必须和所在类的名字相同。2)构造方法没有返回值类型,甚至连void都没有。3)构造方法是在一个创建一个对象时由new操作符调用的。构造方法的作用是初始化对象。

12.通常,类会提供一个没有参数的构造方法,这样的构造方法称为无参构造方法。

13.默认构造方法,当且仅当类中没有明确定义任何构造方法时才会自动提供。

14.对象的数据和方法可以运用点操作符(.)通过对象的引用变量进行访问。

15.声明数组变量、创建对象以及将对象的引用赋值给这个变量的语句。

16.对象成员指该对象的数据域和方法。(.)也称为对象成员访问操作符。

17.方法作为对象上的操作被调用。

18.实例变量依赖于某个具体的实例。实例方法只能在具体的实例上调用它,实例方法被调用的对象成为调用对象。

19.Math类中的所有方法都是用关键字static定义的静态方法。

20.创建一个对象,而不明确的把它赋值给一个变量称为匿名变量。

21.数据域也可能是引用型的。String是一个预定义的java类。

22.如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的java值null。

23.J ava没有给方法中的局部变量赋默认值。

24.每个变量都代表一个保存了存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。对基本类型的变量来说,对应内存所存储的值是一个引用,是对象的存储地址。

25.J ava运行系统会检测垃圾并自动回收它所占据的空间,这个过程称为垃圾回收。

26.如果你不再需要某个对象,可以显式的给该对象的引用变量赋null值。如果该变量没有被任何引用变量所引用,java虚拟机将自动回收它所占据的空间。

27.J ava API包含了丰富的类的集合,用于开发java程序。

28.J ava在java.util.Date类中还提供了与系统无关的对日期和时间的封装。

29.M ath.random()获取一个0.0到1.0(不包括1.0)之间的随机double类型值。

30.创建一个random对象时,必须指定一个种子或者使用默认的种子。种子是一个用于初始化随机数字生成器的数字。

31.如果这两个random对象有相同的种子,那么它们将产生相同的数列。

32.如果想让一个类的所有实例共享数据,就要使用静态变量,也称为类变量。静态变量将

变量值存储在一个公共的内存地址。Java支持静态方法和静态变量,无须创建类的实例就可以调用静态方法。

33.实例变量属于实例,并存储在互不相关的内存中,静态变量被同一个类的所有实例所共享。类中的常量是被该类的所有对象所共享的。

34.M ath类的所有方法都是静态的。Main方法也是静态方法。

35.实例方法和实例数据都是从属于实例的,所以在实例创建之后才能使用。它们是通过引用变量来访问的。静态方法和静态数据可以通过引用变量或它们的类名来调用。

36.静态变量和方法可以在不创建对象的情况下访问。PI是一个定义在math中的常量。

37.使用“类名.方法名(参数)”的方式调用静态方法,使用“类名.静态变量”的方式访问静态变量。这会提高可读性,因为可以很容易的识别出类中的静态方法和数据。

38.静态方法不能调用实例方法或者访问实例数据域。

39.可见性修饰符可以用于确定一个类以及他的成员的可见性。

40.包可以用来组织类。如果定义类时没有声明包,就表示把它放在默认包中。

41.私有的修饰符限定访问权限在他自己的类内,默认修饰符限定访问权限在包内,而公共的修饰符可以无限的访问。

42.如果一个类没有被定义为公共类,那么它只能在同一个包里被访问。

43.可见性修饰符指明类中的数据域和方法是否能在该类之外被访问。

44.修饰符private只能应用在类的成员上。修饰符public可以应用在类或类的成员上。在局部变量上使用修饰符public和private都会导致编译错误。

45.大多数情况下,构造方法应该是公共的。因为math类的所有数据域和方法都是静态的,所以没必要创建math类的实例。

46.将数据域设为私有可以保护数据,并且使得类易于维护。1)数据可能被篡改。2)它使得类难以维护,同时容易出现错误。

47.为了避免对数据域的直接修改,应该使用private修饰符将数据域声明为私有的,这称为数据域封装。

48.私有数据域不能被对象从定义该私有域的类外访问。获取方法称为访问器,而设置方法称为修改器。

49.为防止数据被篡改以及使类更易于维护,将数据域声明为私有的。除非特别的原因而另外指定,否则所有的数据域都应该声明为私有的,并且所有的构造方法和方法应该被声明为公共的。

50.给方法传递一个对象,是将对象的引用传递给方法。同传递数组一样,传递对象实际上是传递对象的引用。Java只有一种参数传递方式,值传递。

51.传递引用类型的参数时,传递的是对象的引用。引用按值传递在语义上最好描述为按共享传参,也就是说,在方法中引用的对象和传递的对象是一样的。

52.数组既可以存储基本类型值,也可以存储对象。对象的数组实际上是引用变量的数组。

53.当使用new操作符创建对象数组后,这个数组中的元素都是默认值为null的引用变量。

54.可以定义不可变类来产生不可变对象。不可变对象的内容不能被改变。例如String类就是不可变的。

55.要使一个类成为不可变的:1)所有数据域都是私有的2)没有修改器方法3)没有返回一个指向可变数据域的引用的访问器方法。

56.实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的。

57.一个类中的实例变量和静态变量称为类变量或数据域。在方法内部定义的变量称为局部变量。无论在何处声明,类变量的作用域都是整个类。类变量只能声明一次。

58.如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,而同名的类变量

将被隐藏。

59.关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。关键字this是一个对象可以用来引用自身的引用名。在引用被方法或者构造方法的参数所隐藏的数据域以及调用一个重载的构造方法时,this引用是必需的。

60.使用数据域作为设置方法或者构造方法的参数是一个好方法,这样可以使得代码易于阅读,并且可以避免创建不必要的名字。

61.隐藏的静态变量可以简单的通过className.staticVariable引用。隐藏的实例变量可以使用关键字this来访问。

62.关键字this可以用于调用同一个类的另一个构造方法。

63.J ava要求,在构造方法中语句this应在任何其他可执行语句之前出现。

第十章面向对象思考

1.类的抽象是指将类的实现和类的使用分开,实现的细节被封装并且对用户隐藏,这被称为类的封装。

2.从类外可以访问的public构造方法、普通方法和数据域的集合以及对这些成员预期行为的描述,构成了类的合约。类也称为抽象数据类型。

3.类抽象和封装是一个问题的两个方面。

4.面向对象编程的范式重点在于对象,动作和数据一起定义在对象中。

5.面向过程的范式重点在于设计方法。面向对象的范式将数据和方法耦合在一起构成对象。使用面向对象范式的软件设计重点在对象以及对象上的操作。

6.类为构建可重用软件提供了更好的灵活性和模块化。

7.面向对象方法结合了面向过程范式的功能以及将数据和操作集成在对象中的特性。

8.使用对象提高了软件的可重用性,并且使程序更易于开发和维护。一个java程序可以看作是一个相互操作的对象集合。

9.类之间的关系通常有关联、聚合、组织以及继承。

10.关联由两个类之间的实线表示。在java代码中,可以通过使用数据域以及方法来实现关联。

11.聚合是关联的一种特殊形式,代表了两个对象之间的归属关系。所有者的对象称为聚集对象,它的类称为聚集类。而从属对象称为被聚集对象,它的类称为被聚集类。

12.被聚集对象的存在依赖于聚集对象,我们称这两个对象之间的关系为组合。

13.聚集关系通常被表现为聚集类中的一个数据域。聚集可以存在于同一个类的对象之间。

14.由于聚集和组合关系都以同样的方式用类来表示,为了简单起见,我们不区分它们,将两者都称为组合。

15.栈是一种“后进先出”的方式存放数据的数据结构。

16.基本数据类型值不是对象,但是可以使用java API 中的包装类来包装成一个对象。

17.因为处理对象需要额外的系统开销,所以,如果将基本数据类型当作对象使用,就会给语言性能带来负面影响。

18.Boolean类包装了布尔值true或者false。

19.数值包装类相互之间都非常相似。

20.既可以用基本数据类型值也可以用数值的字符串来构造包装。

21.包装类没有无参构造方法。所有包装类的实例都是不可变的,这意味着一旦创建对象后,它们的内部值就不能再改变。

22.静态方法valueOf(String s),该方法创建一个新对象,并将它初始化为指定字符串表示的值。

23.将基本类型值转换为包装类对象的过程称为装箱,相反的转换过程称为拆箱。

24.j ava.math包中的BigInteger类和BigDecimal类。它们都是不可变的。BigInteger的实例可以表示任意大小的整数。BigDecimal对象可以达到任意精度。

25.S tring对象是不可改变的。字符串一旦创建,内容不能被改变。字符串是对象。

26.t rim()方法将字符串两端的空白字符裁剪掉。

27.可以用字符串字面值或字符数组创建一个字符串对象。

28.j ava虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串字面值使用同一个实例。这样的实例称为驻留的字符串。

29.s plit方法可以使用指定的分隔符从字符串中提取标记。

30.正则表达式是一个字符串,用于描述匹配一个字符串集的模式。例如子串 .*与0个或多个字符相匹配。

31.字符串不是数组,但是字符串可以转化为数组。toCharArray()方法、getChars()方法和valueOf()方法。

32.S tringBuilder和StringBuffer类似于String类,区别在于String类是不可改变的。

33.S tringBuffer类中修改缓冲区的方法是同步的,这意味着只有一个任务被允许执行该方法。如果是多任务并发访问,就使用StringBuffer,因为这种情况下需要同步以防止StringBuffer损坏。StringBuffer和StringBuilder中的构造方法以及其他方法几乎是一样的。

34.容量是指不增加构建器大小的情况下能够存储的字符数量。

35.s etLength(newLength)方法设置字符串构建器的长度。如果newLength小于字符串构建器的当前长度,则字符串构建器会被截短到恰好能包含由参数newLength给定的字符个数。参数newLength必须大于0。

36.字符串的长度总是小于或等于构建器的容量。在计算机内部,字符串构建器是一个字符数组,因此,构建器的容量就是数组的大小。如果容量过大将会浪费内存空间,使用trimToSize()方法将容量降到实际的大小。

第十一章继承和多态

1.面向对象编程支持从已经存在的类中定义新的类,这称为继承。

2.使用继承:避免冗余,并使系统易于理解和易于维护。

3.toString()方法返回该对象的字符串表示。以返回一个代表该对象的描述性字符串。

4.子类继承了父类中所有可访问的数据域和方法。

5.私有数据域不能被除了类本身之外的其他任何类访问的。唯一读取和改变的方法就是通过他们的获取方法和设置方法。

6.关于继承的关键点:1)和习惯性说法不同,一个子类通常比他的父类包含更多的信息和方法。2)父类中的私有数据域在该类之外是不可访问的。因此,不能在父类外直接使用。

7.继承是用来为“是一种”关系建模的。Java不允许多重继承。只能单一继承,

多重继承可以通过接口来实现。

8.子类继承他的父类中所有可访问的数据域和方法。This是对调用对象的引用。Super可以用于两重途径:调用父类的构造方法和调用父类的普通方法。

9.父类的构造方法不会被子类继承,它们只能使用关键字super从子类的构造方法中调用。

10.如果要使用super(),必须出现在子类构造方法的第一行,这是显式调用父类

构造方法的唯一方式。在子类中调用父类的构造方法的名字会引起一个语法错误。

11.子类需要修改父类中定义的方法的实现,称为方法重写。

12.重写的特点:1)重写的方法必须与被重写的方法具有一样的签名,以及一样或者兼容的返回类型。(兼容的含义是重写方法的返回类型可以是被重写方法的返回类型的子类型)。2)仅当实例方法可访问时,它才能被重写。如果子类中定义的方法在父类中是私有的,那么这两个方法完全没有关系3)与实例方法一样,静态方法也能被继承。但是,静态方法不能被重写。

13.重写标注:@Override 使用@Override标注可以避免错误。

14.Java中的所有类都继承自https://www.doczj.com/doc/3112836564.html,ng.Object类。

15.面向对象程序设计的三大支柱是封装、继承和多态。

16.使用父类对象的地方都可以使用子类的对象。这就是通常所说的多态。多态意味着父类型的变量可以引用子类型的对象。

17.方法可以在沿着继承链的多个类中实现,JVM决定运行时调用哪个方法。

18.一个变量必须被声明成某种类型,变量的这个类型称为它的声明类型。变量

的实际类型是被变量引用的对象的实际类。调用哪个方法由实际类型决定,称为动态绑定。

19.匹配方法的签名和绑定方法的实现是两个不同的问题。引用变量的声明类型决定了编译时匹配哪个方法。绑定方法的实现是由变量的实际类型决定的。20.一个对象的引用可以类型转换为对另外一个对象的引用,这称为对象转换。

21.隐式转换和显式转换。为什么要进行类型转换呢?声明类型决定了在编译时

匹配哪个方法。如果声明类型里面没有,会引起一个编译错误。那为什么不一开始就定义为实际类型呢?为了能够进行通用程序设计,一个好的做法是把变量定义为父类型,这样,他就可以接收任何子类型的对象。

22.instanceof是java的关键字,java关键字中的每一个字母都是小写的。

23.只有源对象是目标类的实例时才能进行类型转换。

24.对象成员访问操作符(.)优先于类型转换操作符。

25.转换一个基本类型值返回一个新的值,转换一个对象引用不会创建一个新的对象。

26.ArrayList对象可以用于存储一个对象列表。存储在ArrayList中的元素必须是一种对象。

27.ArrayList是一种泛型类,具有一个泛型类型E。

28.ArrayList的大小是灵活的,所以无需提前给定它的大小。

29.继承是对“是一种”建模,而组合是对“是一部分”关系建模。

30.类可以以两种方式使用:一种是用于创建该类的实例;另一种是通过继承该类创建它的子类。

31.修饰符private和protected只能用于类的成员。Public修饰符和默认修饰符既可以用于类的成员,也可以用于类。

32.子类不能削弱父类中定义的方法的可访问性。

33.一个被final修饰的类和方法都不能被继承。被final修饰的数据域是一个常数。

34.Math类就是一个最终类。String、StringBuilder和StringBuffer类以及所有基本数据类型的包装类也都是最终类。

35.修饰符public、protected、private、static、abstract以及final可以用在类和类的成员(数据和方法)上,只有final修饰符还可以用在方法中的局部变量上。方法内的final局部变量就是常量。

第十二章异常处理和文本I/O

1.异常是运行时错误。异常处理使得程序可以处理运行时错误,并且继续通常

的执行。运行时错误会作为异常抛出,异常就是一种对象,表示阻止正常运行的错误或者情况。如果异常没有被处理,那么程序将会非正常终止。

2.异常是从方法抛出的。方法的调用者可以捕获以及处理该异常。

3.一个浮点数除以0是不会产生异常的。

4.不应该让方法来终止程序,应该由调用者决定是否终止程序。

5.Java可以让一个方法可以抛出一个异常,该异常可以被调用者捕获和处理。

6.Throw语句的执行称为抛出一个异常。异常就是一个从异常类创建的对象。“抛出异常”就是将异常从一个地方传递到另一个地方。

7.Try块包含了正常情况下执行的代码。异常被catch块所捕获。Catch块中的代码被执行以处理异常。Throw语句类似于方法的调用,但不同于调用方法的是,它调用的是catch块。

8.一个异常可能是通过try块中的throw语句直接抛出,或者调用一个可能会抛出异常的方法而抛出。

9.异常处理最根本的优势就是将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来。

10.异常是对象,而对象都采用类来定义。异常的根类是https://www.doczj.com/doc/3112836564.html,ng.Throwable。

11.Throwable类是所有异常类的根。系统错误是由java虚拟机抛出的,用Error 类表示。这种异常除了通知用户以及尽量稳妥的终止程序外,几乎什么也不能做。

12.异常是由Exception类表示的。这些错误能被程序捕获和处理。

13.运行时异常是用RuntimeException类表示的,他描述的是程序设计错误。

14.RuntimeException、Error以及他们的子类都称为免检异常。所有的其他异常都称为必检异常。免检异常反映出程序设计上不可恢复的逻辑错误。

15.Java异常处理模型基于三种操作:声明一个异常、抛出一个异常和捕获一个异常。

16.每个方法都必须声明他可能抛出的必检异常的类型。这称为声明异常。

17.如果父类中的方法没有声明异常,那么就不能在子类中对其重写时声明异

常。

18.检测到错误的程序可以创建一个合适的异常类型的实例并抛出它,这称为抛出一个异常。声明异常的关键字是throws,抛出异常的关键字是throw。19.如果try块中的某条语句抛出一个异常,java就会跳过try块中的剩余的语句,然后开始查找处理这个异常的代码。处理这个异常的代码称为异常处理器。

20.查找处理器的过程称为捕获一个异常。

21.各种异常类可以从一个共同的父类中派生。如果一个catch块可以捕获一个父类的异常对象,它就能捕获那个父类的所有子类的异常对象。

22.如果父类的catch块出现在子类的catch块之前,就会导致编译错误。RuntimeException是Exception的一个子类。

23.Java强制程序员处理必检异常。

24.异常对象中包含关于异常的有价值的信息。

25.无论异常是否发生,finally子句总会被执行。

26.使用finally子句时可以略去catch块。

27.当错误需要被方法的调用者处理的时候,方法应该抛出一个异常。

28.异常处理可以使程序更易读、更易修改。但是异常处理通常需要更多的时间

和资源。异常发生在方法中。如果能在发生异常的方法中处理异常,那么就不需要抛出或使用异常。

29.什么时候使用try-catch块?当必须处理不可预料的错误状况时应该使用它。

30.与另一个异常一起抛出一个异常,构成了链式异常。

31.可以通过继承https://www.doczj.com/doc/3112836564.html,ng.Exception类来定义一个自定义异常类。

32.文件名是一个字符串。File类是文件名及其目录路径的一个包装类。

33.File对象封装了文件或路径的属性,但是它既不包括创建文件的方法,也不包括向/从文件中写/读数据(称为数据输入输出,简称I/O)的方法。

34.Java.io.PrintWriter类可用来创建一个文件并向文本文件写入数据。

第十三章抽象类和接口

1.父类中定义了相关子类中的共同行为。接口可以用于定义类的共同行为(包括非相关的类)。

2.抽象类不可以用于创建对象。抽象类可以包含抽象方法,这些方法将在具体的子类中实现。

3.抽象类的构造方法定义为protected,因为它只被子类使用。

4.抽象类的说明:1)抽象方法不能包含在非抽象类中2)抽象类不能使用new 操作符来初始化。但是仍然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用。3)包含抽象方法的类必须是抽象的。可以定义一个不包含抽象方法的抽象类。这个抽象类用于作为定义新子类的基类。4)即使子类的父类是具体的,这个子类也可以是抽象的。5)不能使用new操作符从一个抽象类创建一个实例,但是抽象类可以作为一种数据类型。

5.Number类是数值包装类以及BigInteger和BigDecimal类的抽象父类。

6.接口是一种与类相似的结构,用于为对象定义共同的操作。它的目的是指明相

关或者不相关类的对象的共同行为。例如,使用适当的接口,可以指明这些对象是可比较的、可食用的或者可克隆的。

7.就像常规类一样,每个接口都被编译为独立的字节码文件。与抽象类相似,不能使用new操作符创建接口的实例。

8.类和接口的之间的关系称为接口继承。因为接口继承和类继承本质上是相同的,所以我们将它们都简称为继承。

9.接口中所有数据域都是public static final 而且所有的方法都是public abstract,所以java允许忽略这些操作符。

https://www.doczj.com/doc/3112836564.html,parable接口定义了compareTo方法,用于比较对象。Comparable接口是一个泛型接口。在实现该接口时,泛型类型E被替换成一种具体的类型。

11.Object类包含equals方法,它的目的就是为了让Object的子类来重写它。

12.Cloneable接口指定了一个对象可以被克隆。

13.接口包括常量和抽象方法。一个方法体为空的接口称为标记接口。

14.关键字native表明这个方法不是用java写的,但它是JVM针对本地平台实现的。

15.接口可以继承其他接口但不能继承类。

16.类的设计原则:内聚性、一致性、封装性、清晰性、完整性、实例和静态、继承和聚合、接口和抽象类。

第十七章二进制I/O

1.文件可以分为文本或者二进制的。

2.不能使用文本编辑器来读取二进制文件--它们被设计为使用程序来读取。

3.二进制文件的优势在于它的处理效率比文本文件要高。

4.使用scanner类读取文本数据,使用printWriter类写文本数据。File对象

封装了文件或者路径属性,但是不包含从/向文件读/写文本数据的方法。

5.输入类包含读数据的方法,而输出类包含写数据的方法。

6.输入对象从文件中读取数据流,输出对象将数据流写入文件。

7.二进制I/O不涉及编码和解码,因此比文本I/O更加高效。

8.计算机并不区分二进制文件和文本文件。所有的文件都是以二进制形式来存

储的,因此,从本质上说,所有的文件都是二进制文件。

9.对于文本I/O而言,编码和解码都是自动进行的。二进制I/O不需要转化。

10.一般来说,对于文本编辑器或文本输出程序创建的文件,应该使用文本输入

来读取,对于java二进制输出程序创建的文件,应该使用二进制来读取。

11.二进制文件和主机的编码方案无关,因此,它是可移植的。任何机器上的java

程序都可以读取java程序所创建的二进制文件。

12.抽象类InputStream是读取二进制数据的根类,抽象类OutputStream是

写入二进制数据的根类。

13.二进制I/O类中的所有方法都声明为抛出java.io.IOException或

java.io.IOException的子类。

14.FileInputStream类和FileOutputStream类用于从/向文件读取/写入字

节。它们的所有方法都是从InputStream类和OutputStream类继承的。

15.如果试图为一个不存在的文件创建FileInputStream对象,将会发生

java.io.FileNotFoundException异常。

16.DataInputStream从数据流读取字节,并且将它们转换为合适的基本类型

值或字符串。DataOutputStream将基本类型的值或字符串转换为字节,并且将字节输出到流。

17.一个Unicode码由两个字节构成。writeChar(String s)方法将字符串s中的

所有字符的Unicode码写到输出流中。WriteBytes(String s)方法将字符串s中的每个字符Unicode码的低位字节写到输出流。Unicode码的高位字节被丢弃。

18.DataInputStream和DataOutputStream以机器平台无关的方式读写java

基本类型值和字符串。

19.应该按与存储时相同的顺序和格式读取文件中的数据。

20.如果到达InputStream的末尾之后还继续从中读取数据,就会产生

EOFException异常。

21.BufferedInputStream类和BufferedOutputStream类可以通过减少磁

盘读写的次数来提高输入和输出的速度。使用BufferedInputStream时,

磁盘上的整块数据一次性的读入内存的缓冲区中。使用

BufferOutputStream,单个数据首先写入内存的缓冲区中。当缓冲区已满时,缓冲区中的所有数据一次性写入磁盘中。

22.如果没有指定缓冲区的大小,默认的大小是512字节。

23.应该总是使用缓冲I/O来加速输入和输出。

24.ObjectInputStream类和objectOutputStream类可以用于读/写可序列

化对象。

25.DataInputStream类和DataOutputStream类可以用于读/写可序列化的

对象。

26.DataInputStream类和DataOutputStream类可以实现基本的数据类型与

字符串的输入和输出。ObjectInputStream和ObjectOutputStream还可以实现对象的输入和输出。

27.ObjectInput是DataInput的子接口。

28.可以向数据流中写入多个对象或基本类型数据。从相应的

ObjectInputStream中读回这些对象时,必须与其写入时的类型和顺序相同。

29.readObject()方法可能会抛出异常https://www.doczj.com/doc/3112836564.html,ng.ClassNotFoundException。

30.Serializable接口是一种标记接口。因为它没有方法,所以不需要在类中为

实现Serializable接口增加额外的代码。

31.Java提供一个内在机制自动完成写对象的过程。这个过程称为对象序列化。

读取对象的过程称为对象反序列化。它是在objectInputStream类中实现的。

32.如果一个对象是Serializable的实例,但它包含了不能序列化的实例数据域,

那么可以序列化这个对象吗?答案是否定的。

33.Java提供了RandomAccessFile类,允许在文件的任何位置进行数据的读

写。

面向对象程序设计考前复习题及答案

简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

JAVA语言与面向对象程序设计课后习题答案

第1章面向对象软件开发概述 1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。 面向过程的编程语言:C,Pascal,Foratn。 面向对象的编程语言:C++,Java,C#。 2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。 答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一个具体的电视机,如“我家那台电视机”。 3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学生”,试为这个对象设计状态与行为。 答:对象都具有状态和行为。 对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。 行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。 学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等; 学生的行为:自我介绍、入学注册、选课、参加比赛等。 4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生”与对象“大学生”是什么关系? 答:对象间可能存在的关系有三种:包含、继承和关联。 对象“班级”与对象“学生”是包含关系。 对象“学生”与对象“大学生”是继承关系。 5.有人说“父母”和“子女”之间是继承的关系。这种说法是否正确?为什么? 答:“父母”和“子女”之间不是面向对象意义上的“继承”关系。因为这里的继承关系是“is a”的关系,“男人”与“人”之间可以说是继承关系。 6.面向对象的软件开发包括哪些过程?OOA模型包括哪三个层次?OOD模型在OOA模型的基础上引入了哪些工作? 答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis,OOA)、面向对象的设计(Object oriented design,OOD)、面向对象的实现(Object oriented programming,OOP)三个阶段。 面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。 面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容。 7.面向对象的程序设计方法有哪些优点? 答:由于对象的概念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,使得上述“分析—设计—实现”的开发过程也更加高效、快捷。

面向对象程序设计第12章在线测试

《面向对象程序设计》第12章在线测试剩余时间:59:56 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、面向对象的程序设计语言必须具备的关键要素是( ) A、抽象和封装 B、抽象和多态性 C、抽象、封装、继承和多态性 D、抽象、封装和继承性 2、封装性应具有的条件是() A、有一个清晰的边界 B、有确定的接口 C、受保护的内部实现 D、以上所有 3、OOD的作用是() A、提取需求 B、逻辑建模 C、求解域建模 D、分析用例 4、按钮与电梯按钮的关系是() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 5、面向对象模型不包括() A、静态模型 B、对象模型 C、功能模型 D、动态模型 第二题、多项选择题(每题2分,5道题共10分) 1、部分与整体的关系有()方式 A、组合 B、联合 C、聚合 D、整合

2、对象之间存在的关系包括() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 3、关于多态的说法正确的是() A、不同类型的对象接收相同的消息产生不同的行为 B、多态的成员函数需要定义为虚函数 C、在C++中通过基类指针调用虚函数实现多态 D、多态是指对象的多种表现形式 4、关于软件生命周期的说法正确的是() A、开发程序就是直接编码 B、在程序设计之前需要先进行软件设计 C、软件投入使用后软件生命周期结束 D、软件维护也是软件生命周期的一个阶段 5、下面关于面向对象的特征说法正确的是() A、每一个对象都具有唯一的标识 B、任何类的划分都是客观的,程序员必须遵守其规定 C、继承性是子类自动共享父类数据结构和方法的机制 D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的 结果 第三题、判断题(每题1分,5道题共5分) 1、面向对象开发技术分三个阶段:面向对象分析,面向对象设计和面向对象实现。 正确错误 2、面向对象的要素包括抽象、封装。

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

Java面向对象程序设计—习题和答案

1.11 习题 1.Java起源于___________年 2.Java的特点包含:__________、___________、___________、___________和___________。 3.Java体系结构包含: A.Java编程语言 B.Java类文件格式 C.Java API D.JVM。 4..javac的作用是: A.将源程序编译成字节码 B.将字节码编译成源程序 C. 解释执行Java字节码 D.调试Java代码 5.什么是Java虚拟机? 6.编写一个Java程序,输出“Hello Java!” 答案: 1.1995 2. 简单性、一次开发到处运行、分布式、健壮性、安全性 3. ABCD 4. A 5. JVM是Java虚拟机(Java Virtual Machine)的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。 6. Public class MyClass { public static void main(String[] args) { System.out.println("Hello Java!"); } } 2.11 习题 1.Java的基本数据类型包含___________、___________、___________、___________、___________、___________、___________和___________。 2.变量主要用来___________,是用标识符命名的数据项,是程序运行过程中可以改变值的量。 3.下面哪些表示符是正确的? A.MyWorld B.parseXML

面向对象程序设计复习题及参考答案

网络教育课程考试复习题及参考答案 面向对象程序设计 一、填空题: 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.Java通过来区分重载函数。 3.在子类中使用保留字_ _可调用被子类覆盖的父类中的方法。 4.使用保留字可以从一个构造方法中调用同一个类的另一个构造方法。 5.抽象类用修饰符定义。 6.类的数据成员的访问权限修饰符一般为 7.访问权限修饰符按照访问权限的大小从大到小分别为、、 、。 8.定义类的构造方法不能有,其名称与名相同。 9.抽象方法是的特征是。 10.Java中的所有异常都是从继承来的。 11.对象引用中存储的内容是。 12.下列程序段执行后, String str1 = new String("Java"); String str2 = new String("Java"); if (str1.equals(str2)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); } 输出结果为:。 13.下面循环执行后的sun值为 int count =0, sum = 0; while ( count <10 ) { sum += count; count ++; } 14.Java语言中关键字_ _表示双精度类型。 15.保留字_ _用于导入包中的类到程序中,供程序中使用。 16.Java语言中继承是用保留字表示。 17.面向对象程序设计中,类是指。 18.对象包含和。 19.若有类定义: class B extends A{ … } 则类B是类A的_ 。 20.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_ 块来捕 获和处理异常。 21.多态是指。 22.声明常量时使用修饰符。 23.Java中异常抛出使用保留字。 24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名 来访问和调用。

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

面向对象程序设计课后答案完整版

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

Java面向对象编程上机-练习题汇总

【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。

《面向对象程序设计C 》期末试卷及标准答案(A)

一、选择题(每小题2分,共40分) 1、C++是()。 A. 面向对象的程序设计语言 B. 面向过程的程序设计语言 C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言 D. 非结构化的程序设计语言 2、面向对象程序设计思想的主要特征中不包括()。 A. 封装性 B. 多态性 C. 继承性 D. 功能分解,逐步求精 3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入: Microsoft Visual Studio 6.0! 所得的结果是str=()。 A. Microsoft Visual Studio 6.0! B. Microsoft C. Microsoft Visual D. Microsoft Visual Studio 6.0 4、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A. testDefaulParam(5); B. testDefaulParam(5,8); C. testDefaulParam(5,'#'); D. testDefaulParam(0,0,'*'); 5、下列语句中,将函数int sum(int x, int y)正确重载的是()。 A. float sum(int x, int y); B. int sum(int a, int b); C. float sum(float x, float y); D. double sum(int y, int x); 6、下列表示引用的方法中,()是正确的。 已知:int a=1000; A. int &x=a; B. char &y; C. int &z=1000; D. float &t=&a; 7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。 A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用 8、下列有关C++类的说法中,不正确的是()。 A. 类是一种用户自定义的数据类型 B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员 C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的 D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的 9、已知X类,则当程序执行到语句:X array[3];时,调用了()次构造函数。 A. 0 B. 1 C. 2 D. 3 10、下面说法中,正确的是() A. 一个类只能定义一个构造函数,但可以定义多个析构函数 B. 一个类只能定义一个析构函数,但可以定义多个构造函数 C. 构造函数与析构函数同名,只要名字前加了一个求反符号(~) D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以 11、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。

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