[Java]《Java编程思想》知识点总结(坚持逐步更新)

第1章

1.抽象与对象:编程语言提供抽象机制,解决问题的复杂性取决于抽象的类型和质量。“类型”指“所抽象的是什么”。

应只针对待解决的问题建模。面向对象方式提供表示问题空间中的元素的工具,将问题空间中的元素及其在解空间中的表示称为”对象“。

程序可通过添加新类型的对象使自身适用于某个特定问题,当你阅读描述解决方案的代码时,也是在阅读问题的表述。这是一种更灵活和强有力的语言抽象。

2.面向对象语言的五个基本特性:

1)万物皆对象 2)程序是对象的集合,通过发送消息交互(调用) 3)每个对象都由其他对象构成 4)每个对象都拥有其类型(类)

5)某一特定类型的所有对象都可接收同样的消息

对象具有状态(内部数据)、行为(方法)和标识(唯一地址)

3.接口:类描述了具有相同特性(数据元素)和行为(功能) 的对象集合,实际上就是一个数据类型。接口确定了对某一特定对象所能发出的请求。程序中必须有满足这些请求的代码,这些代码与隐藏的数据一起构成了实现。每个可能的请求都有一个方法与之相关联。

4.UML:Unified Modelling Language,统一建模语言——每个类用一个方框表示,类名在方框顶部,数据成员描述在方框中间部分,方法在方框底部。通常,只有类名和公共方法被示于UML设计图中。

5.服务提供者:1)调用或创建提供理想服务的对象来解决问题 2)提高对象内聚性:高内聚是软件设计基本质量要求之一,指的是一个软件构件各方面”组合“得很好。要避免将过多的功能都塞在同一对象中。

6.访问控制:程序开发人员按照角色分为类创建者(那些创建新数据类型的程序员)和客户端程序员(那些在其应用中使用数据类型的类消费者),类创建者构建的类只向客户端程序员暴露必需部分,而隐藏其他部分。原因:1)让客户端程序员无法触及他们不应该触及的部分 2)接口和实现分离,库设计者可以改变类内部工作方式而不会影响到客户端程序员。

访问权限:1)public——任何人可用 2)private——只有类创建者和类型内部方法可访问 3)protected——继承的类可访问 4)默认访问权限——没有使用前面任何指定词时发挥作用,通常称包访问权限,这种权限下,类可访问同一个包中其他类成员,在包之外,如同指定了private一样。

7.组合与继承

使用现有的类合成新的类,被称为组合(composition),如果组合动态发生,称为聚合(aggregation),组合被视为"has-a"(拥有)关系。组合更简单灵活,建立新类时应首先考虑组合。

一个基类型包含所有导出类型共享的特性和行为,子类复制了基类的接口,与基类具有相同类型。改变现有基类的方法的行为,称为覆盖(overriding)。

8.多态

把一个对象当作其泛化类型对象对待,可以编写不依赖于特定类型的代码(仅仅和基类交互)。这时需要在函数调用机制上采用后期绑定:被调用代码直到运行时才能确定。将导出类看做是它的基类的过程称为向上转型(upcasting):

9.单根继承结构

Java中的所有类最终都继承自单一基类:Object

在单根继承结构中所有对象都具有一个共用接口,所以它们归根结底都是相同的基本类型;所有对象都具备某些功能;不会因为无法确定对象类型而陷入僵局。

10.容器:存储对象,运行时确定空间大小

1)不同容器提供不同类型的接口和外部行为 2)不同容器对于某些操作具有不同效率

11.参数化类型:JavaSE5以前,容器存储的对象都只具有Java通用类型Object.对象置入容器会丢失其身份。这时要变回原类型需要向下转型:转型错误会发生运行时异常,所以需要以某种方式记住究竟是什么类型。

创建保存特定类型的容器,称为参数化类型机制。Java中称泛型。

12.对象创建和销毁

存储:1)置于堆栈或静态存储区域,明确存储空间分配和释放(C++) 2)在被称为堆(heap)的内存池中动态创建:运行时确定多少对象、生命周期和具体类型

Java完全采用动态内存分配方式。提供”垃圾回收器“机制,自动发现对象何时不再使用,继而销毁它。

13.异常处理

Java将异常处理直接置于编程语言中,异常是一种对象,从出错地点被”抛出“,被处理相应类型的异常处理器”捕获“。异常处理就像与程序正常执行并行的,错误发生时执行的另一条路径。不会干扰正常执行代码。Java内置异常处理并强制使用。它是唯一可接受的错误报告方式。

14.并发

把问题切分成多个可独立运行的部分,提高程序响应能力。独立运行的部分称为线程,上述概念称为”并发“。

隐患:共享资源。多个并行任务访问同一资源,就会出问题。解决办法:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可使用此资源。

第2章

1.引用操纵对象:可单独创建,不一定有一个对象与之关联。向一个未关联对象的引用发送消息会返回一个运行时错误。安全的做法是创建引用的同时初始化:String s="dlsl".

2.存储数据的地方

1)寄存器 2)堆栈(通用RAM中):堆栈指针向下移动分配新内存,向上移动释放内存 3)堆:一种通用内存池(也位于RAM),存放所有Java对象。编译器不需知道存储数据存活时间。会自动进行存储分配。4)常量存储:程序代码内部; ROM中:字符串池,所有字面常量字符串和具有字符串值的常量表达式都自动内存限定,置于特殊的静态存储区 5)非RAM存储:数据完全存活于程序之外 例子:流对象——转化成字节流被发送给另一台机器  持久化对象——存放于磁盘,需要时恢复成常规RAM对象。

3.基本数据类型:直接存储”值“,不用new创建变量,并非引用,不置于堆,而置于堆栈中,更加高效。

Java基本数据类型所占存储空间大小不随硬件架构而变化:


boolean——存储空间大小无明确指定,仅定义为字面值true或false

4.Java数组

Java确保数组会被初始化,而且不能在它的范围之外被访问。创建一个数组对象时,实际上是创建了一个引用数组,每个引用会自动被初始化为一个特定值:null.在使用任何引用前,必须为其指定一个对象,如果试图使用一个还是null的引用,运行时会报错。因此数组错误在Java中可以避免。

基本数据类型的数组:编译器确保这种数组的初始化,将这种数组所占内存全部置零。

5.类基本数据类型成员默认值

基本数据类型变量只有作为类的成员使用时,Java才确保给定其默认值,确保那些是基本类型成员得到初始化,防止程序错误。但这些初始值可能是不正确甚至不合法的,所以最好明确对变量初始化。

上述确保初始化的方法不适用于”局部“变量:int x;可能是任意值,不会被自动初始化为零。使用前应赋予一个适当值,否则Java会在编译时返回一个错误。

6.方法基本组成:名称、参数、返回值和方法体。

方法名和参数列表(合称”方法签名“)唯一标识某个方法。

7.参数列表:传递对象实际上是传递引用,基本数据类型是例外:传递是是值。返回:如果返回类型不是void,编译器会强制返回一个正确类型的返回值。

8.static关键字

创建类时只想为某特定域分配单一存储空间,希望某个方法不与包含它的类的任何对象关联在一起。

由于static方法不需要创建任何对象,所以不能简单调用其他非static域或方法而没有指定其对象。

9.注释和嵌入式文档

将代码和文档”链接“起来,使用一种特殊注释语法来标记文档,一个工具提取注释:javadoc——解析特殊注释标签,将毗邻的类名或方法名抽取出来,输出一个HTML文件。

所有javadoc命令都只能在/**中出现,结束于*/独立文档标签以@开头,置于注释行最前面。行内文档标签可出现在任何地方,也以@开头,但括在花括号内。

javadoc只能为public和protected成员进行文档注释,private注释会被忽略掉。可以通过-private标记包括在内。


阅读更多
换一批

没有更多推荐了,返回首页