Thinking in java 笔记
小达人Fighting
这个作者很懒,什么都没留下…
展开
-
被隐藏的具体实现
》》将程序的开发人员按角色分为类创建者(那些创建新数据类型的程序员)和客户端程序员(那些在其应用中使用数据类型的类消费者)。》》客户端程序员的目标是收集各种用来实现快速应用开发的类。 类创建者的目标是构建类,这种类向客户端程序员暴露必须的部分,而隐藏其他部分。》》访问控制的第一个存在原因就是:让客户端程序员无法触及他们不应该触及的部分-------这些部分对数据类型的内部操原创 2018-03-07 20:08:48 · 292 阅读 · 0 评论 -
编码风格
》》驼峰风格: 类名的首字母要大写;如果类名由几个单词构成,那么把它们并在一起 (也就是说,不要用下划线来分隔名字),其中每个内部单词的首字母都 采用大写形式。 几乎其他所有内容-------方法、字段(成员变量)以及对象引用名称等, 公认的风格与类的风格一样,只是标识符的第一个字母采用小写。原创 2018-03-21 21:39:17 · 883 阅读 · 0 评论 -
多态
### 在面向对象的程序设计语言中,多态是继数据抽象和继承 之后的第三种基本特征。 ### 多态通过分离做什么和怎么做,从另一角度将接口和实现 分离开来。多态不但能够改善代码的组织结构和可读性, 还能创建可扩展的程序-----即无论在项目最初创建时还是在 需要添加新功能时都可原创 2018-04-08 18:02:26 · 116 阅读 · 0 评论 -
操作符
》》在最底层,java 中的数据是通过使用操作符来操作的。》》操作符: (1)、加号和一元的正号(+)、减号和一元的负号(-)、 乘号(*)、除号(/)、赋值(=)。这些操作符几乎 都只能支持操作“基本数据类型” (2)、操作符:= 、 == 、 != 这几个操作符原创 2018-04-01 09:25:06 · 106 阅读 · 0 评论 -
控制执行流程
》》true 和 false #### 所有条件语句都利用条件表达式的真或假来决定执行路径。 #### 注意,Java 不允许我们将一个数字作为布尔值使用》》if --else #### if--else 语句是控制程序流程的最基本的形式。其中 else 是可选的。 #### if(原创 2018-04-01 13:06:43 · 138 阅读 · 0 评论 -
接口
### 接口和内部类为我们提供了一种将接口与实现 分离的更加结构化的方法。 ### 抽象类是普通的类与接口之间的一种中庸之道。 尽管在构建具有某些未实现方法的类时,你的第一 思想可能是创建接口,但是抽象类仍旧是用于此目 的的一种重要而必须的工具。因为你不可能总是使 用纯接口。原创 2018-04-09 15:54:40 · 110 阅读 · 0 评论 -
初始化与清理
#### 初始化和清理涉及安全的两个问题。 ####Java 采用构造器,并额外提供了”垃圾回收器“ 构造器:在创建对象时被自动调用的特殊方法 垃圾回收器:对于不再使用的内存资源,垃圾回收器能自动将其释放》》用构造器确保初始化 #### 在创建对象时,如果其类具有构造器,Java 就会在用户有能力操作原创 2018-04-03 20:13:54 · 173 阅读 · 0 评论 -
内部类
》》创建内部类:》》链接到外部类:》》使用.this与.new :》》内部类与向上转型:》》在方法和作用域内的内部类:》》匿名内部类: -------再访工厂方法》》嵌套类: -------接口内部的类 -------从多层嵌套类中访问外部类的成员》》 为什么需要内部类: ------闭包与回调原创 2018-04-11 21:26:15 · 133 阅读 · 0 评论 -
访问控制权限
》》包:库单元 ### 如果你把一个代码放到了某个位置,等过一会儿 回头再看时,有可能会发现有更好的方式去实现相同 的功能。这正是重构的原动力之一,重构即重写代码, 以使得它更可读、更容易理解,并因此 ----原创 2018-04-05 22:46:30 · 207 阅读 · 0 评论 -
持有对象
### Java 有多种方式保存对象(应该说是对象的引用)。 ### Java 类库中提供了一套相当完整的容器:其中基本的 类型是 List 、 Set 、 Queue 和 Map 。这些对象的类型 也称为集合类。》》泛型和类型安全的容器 ### ArrayList -->当作“可以自动扩充自身尺寸的...原创 2018-08-19 10:49:01 · 301 阅读 · 0 评论 -
通过异常处理错误
### Java 的基本理念是 “ 结构不佳的代码不能运行 ” 。 ### Java 使用异常来提供一致的错误报告模型,使得构件能够与客户端 代码可靠地沟通问题。 ### 异常处理是 Java 中唯一正式的错误报告机制,并且通过编译器强制 执行。》》概念 ### Java 中的异常处理则建立在 C++ 的基础之上。...原创 2018-08-27 22:45:11 · 327 阅读 · 0 评论 -
字符串
》》不可变String @@ String 对象是不可变的。 @@ String 类中每一个看起来会修改 String 值的方法,实际上都是创建了一个全新的 String 对象,以包含修改后的字符串内容。而最初的 String 对象则丝毫未动。 @@ 每当把 String 对象作为方法的参数时,都会复制一份引用,而该引用...原创 2018-08-31 21:01:34 · 264 阅读 · 0 评论 -
类型信息
@@ 运行时类型信息使得你可以在程序运行时发现和使用类型信息。 @@ Java 是如何让我们在运行时识别对象和类的信息的(主要有两种方式) ----- 一种是“传统的”RTTI , 它假定我们在编译时已经知道了所有的类型 ---- 另一种是“反射”机制,它允许我们在运行时发现和使用类的信息》》为什么需要 RT...原创 2018-09-04 10:47:19 · 534 阅读 · 0 评论 -
泛型
@@ 在面向对象编程语言中,多态算是一种泛化机制。 @@ 多态具备更好的灵活性。但是,考虑到除了 final 类不能扩展,其他任何类都可以 被扩展,所以这种灵活性大多数时候也会有一些性能损耗。 @@ 泛型实现了参数化类型的概念,使代码可以应用于多种类型。 @@ 在你创建一个参数化类型的实例时,编译器会为你...原创 2018-09-11 22:46:14 · 186 阅读 · 0 评论 -
数组
》》数组为什么特殊 @@ 数组与其他种类的容器之间的区别有三方面:效率 、 类型 和 保存基本类型的能力。 @@ 在 Java 中,数组是一种效率最高的存储和随机访问对象引用序列的方式。 @@ 数组就是一个简单的线性序列,这使得元素访问非常快速。 但是为这种速度所付出的 代价是...原创 2018-09-18 21:22:18 · 117 阅读 · 0 评论 -
注释和嵌入式文档
》》Java中有两种注释风格: (1)、多行注释: /* * */ (2)、单行注释: //----------注释文档》》javadoc 是用于提取注释的工具,原创 2018-03-21 21:28:42 · 245 阅读 · 0 评论 -
第一个Java程序
》》在每个程序文件的开头,必须声明 import 语句,以便引入在文件代码中 需要用到的额外类。注意,在这里说它们是“额外”,是因为有一个特定类 会自动被导入到每一个Java 文件中:java.lang 。 由于 java.lang 是默认导入到每个java 文件中的,所以它的所有类都 可以被直接使用。》》在任何 Java原创 2018-03-21 20:27:00 · 127 阅读 · 0 评论 -
构建一个Java程序
-----名字可见性: 》》在Java 中包名:反过来使用自己的 Internet 域名-----运用其他构件: 》》使用 import 关键字来准确地告诉编译器你想要的类是什么。import 指示编译器导入一个包,也就是一个类库(在其他语言中,一个库不 仅包含类,还可能包括方法和数据;但是java 中所有代码都必须原创 2018-03-21 20:00:35 · 324 阅读 · 0 评论 -
异常处理:处理错误
》》自从编程语言问世以来,错误处理就始终是最困难的问题之一。》》异常处理将错误直接置于编程语言中,有时候甚至置于操作系统中。异常是一种 对象,它从出错的点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常 处理器“捕获”。异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另 一条路径。因为它是另一条完全分离的执行路径,所以它不会干扰正常原创 2018-03-14 21:33:18 · 270 阅读 · 0 评论 -
并发编程
》》将问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在 程序中,这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。》》通常,线程只是一种为单一处理器分配执行时间的手段。但是如果操作系统支持 多处理器,那么每个任务都可以被指派给不同的处理器,并且它们是在真正的并行 执行。》》在语言级别上,多线程所带来的便利之一是程序员不原创 2018-03-14 21:55:45 · 90 阅读 · 0 评论 -
复用具体实现
》》代码复用是面向对象程序设计语言所提供的最了不起的优点之一。》》最简单地复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象置于某个新的类中。我们 称其为“创建一个成员对象”。新的类可以由任意数量、任意类型的其他对象以任意可以实现新类中想要的功能的方式组成。 因为是在使用现有的类合成新的类,所以这种概念被称为“组合”,如果组合是动态发生的,那么它原创 2018-03-08 20:02:47 · 263 阅读 · 0 评论 -
继承
》》一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基类型来表示系统中某些对象的核心概念,从基类 型中导出其他类型,来表示此核心被实现的各种不同方式。》》不需要在问题描述和解决方案描述之间建立许多中间模型,。》》通过使用对象,类型层次结构成了主要模型,因此,可以直接从真实世界中对系统的描述过渡到用代码对系统进行描述。》》当继承现有类型时,也就创建了新的类型原创 2018-03-09 11:58:50 · 175 阅读 · 0 评论 -
Java与Internet
》》Java解决了在万维网(WWW)上的程序设计问题。》》Web 是什么? ----客户/服务器计算机技术 ***核心思想是:系统具有一个中央信息存储池,用来存储某种数据,它通常存在于数据库 中,你可以根据需要将它分发给某些人员或机器集群。 ***客户/服务器概念的关键在于信息存储池的原创 2018-03-15 21:42:33 · 557 阅读 · 0 评论 -
伴随多态的可互换对象
》》在处理类型的层次结构时,经常想把一个对象不当作它所属的特定类型来对待,而是将其 当作其基类的对象来对待。这使得人们可以编写出不依赖特定类型的代码。 这样的代码是不会受到添加新类型影响的,而且添加新类型是扩展一个面向对象程序以便 处理新情况的最常用方式。》》通过导出新的子类型而轻松扩展设计的能力是对改动进行封装的基本方式之一。这种能力 可以极大地改善我原创 2018-03-11 08:55:36 · 547 阅读 · 0 评论 -
抽象过程
抽象过程 》》所有编程语言都提供抽象机制。 》》汇编语言是对底层机器的轻微抽象。接着,出现的许多所谓“命令式”语言(如FORTRAN 、 BASIC 、C 等)都是对汇编语言的抽象。这些语言在汇编语言基 础上有了大幅的改进,但是它们所作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于要解决的问题的结构来考虑。 》》程序员必须建立起在原创 2018-03-04 16:06:33 · 1176 阅读 · 0 评论 -
单根继承结构
》》在java 中,所有类最终都继承自单一的基类。这个基类是 java.lang.Object。 《 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象 (包括数组)都实现这个类的方法。》》》在单继承结构中的所有对象都具有一个共用接口,所以它们归根到底都是相同 的基本类型。》》单根继承结构保证所有对象都具备某些功能。原创 2018-03-11 18:44:35 · 589 阅读 · 0 评论 -
每个对象都有一个接口
》》所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分。》》在程序执行期间具有不同的状态而其他方面都相似的对象会被分组到对象的类中,这就是关键字 class的由来。》》创建抽象数据类型(类)是面向对象程序设计的基本概念之一。抽象数据类型的运行方式与内置类型几乎完全一致:你可以创建某一类型的 变量(按照面向对象的说法,称其为对象或实例),然后原创 2018-03-05 11:30:54 · 1120 阅读 · 0 评论 -
容器
》》容器(也称为“ 集合 ”),在任何需要时都可以扩充自己以容纳你置于其中的所有 东西。因此,不需要知道将来会把多少个对象置于容器中,只需要创建一个容器 对象,然后让它处理所有细节。》》好的面向对象语言都有一组容器,它们作为开发包的一部分。》》Java 在其标准库中也包含有大量的容器。》》在某些类库中,一两个通用容器足够满足所有的需要;但是在其他类库(例如j原创 2018-03-13 09:21:58 · 271 阅读 · 0 评论 -
每个对象都提供服务
》》当在试图开发或理解一个程序设计时,最好的方法就是将对象想象为“服务提供者”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来 实现这一目的。》》将问题分解为对象集合。》》将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性。高内聚是软件设计的基本质量要求之一:这意味着一个软件构件(例如一个 对象,当然它也有可能是指一个方法或原创 2018-03-06 10:48:23 · 394 阅读 · 0 评论 -
对象的创建和生命期
》》在使用对象时,最关键的问题之一便是它们的生成和销毁方式。每个对象 为了生存都需要资源,尤其是内存。当我们不再需要一个对象时,它必须被 清理掉,使其占有的资源可以被释放和重用。》》怎样才能知道何时销毁对象呢?在必须明确删除对象的编程系统中,此问题 变得十分复杂。》》在被称为堆(heap)的内存池中动态地创建对象。这种方式中,直到运行时原创 2018-03-13 15:00:59 · 132 阅读 · 0 评论 -
一切都是对象
------------用引用操纵对象》》在java中,一切都被视为对象。尽管一切都看作对象,但操纵的标识符实际上 是对象的一个“引用”。》》一种安全的做法:创建一个引用的同时便进行初始化。------------必须由你创建所有对象》》原创 2018-03-20 21:36:30 · 115 阅读 · 0 评论 -
复用类
### 复用代码是Java 众多引人注目的功能之一。》》组合语法: ### toString() 方法,每一个非基本类型的对象都 有一个 toString() 方法 ### 》》继承语法: --------初始化基类》》代理:》》结合使用组合和继承: --------确保正确原创 2018-04-07 15:53:08 · 194 阅读 · 0 评论 -
容器深入研究
》》完整的容器分类法 #### 下面是集合类库图: 补充说明: 虚框表示 abstract 类。》》填充容器 ### 一种 Generator 解决方案 *** 事实上,所有的 Collection 子类型都有一个接收另一个 Collection 对象的构造器,用所 接...原创 2019-02-25 23:00:01 · 224 阅读 · 0 评论