Java编程思想
文章平均质量分 90
Java编程思想读书笔记
leonliu06
软件开发工程师
展开
-
Java编程思想读书笔记(一)第1~13、16章
目录:Java编程思想(一)第1~13、16章 Java编程思想(二)第14章-类型信息 Java编程思想(三)第15章-泛型 Java编程思想(四)第17章-容器深入研究 Java编程思想(五)第18章-Java IO系统 Java编程思想(六)第19章-枚举类型 Java编程思想(七)第20章-注解 Java编程思想(八)第21章-并发第1章 对象导论1.1原创 2017-11-26 18:54:06 · 42394 阅读 · 15 评论 -
Java编程思想(二)第14章-类型信息
目录:Java编程思想(一)第1~13、16章 Java编程思想(二)第14章-类型信息 Java编程思想(三)第15章-泛型 Java编程思想(四)第17章-容器深入研究 Java编程思想(五)第18章-Java IO系统 Java编程思想(六)第19章-枚举类型 Java编程思想(七)第20章-注解 Java编程思想(八)第21章-并发1. RTTI(Runtime Ty原创 2018-01-06 21:50:36 · 3394 阅读 · 1 评论 -
Java编程思想读书笔记(三)第15章-泛型
我相信被称为泛型的通用语言特性(并非必须是其在Java中的特定实现)的目的在于可表达性,而不仅仅是为了创建类型安全的容器。类型安全的容器是能够创建更通用代码这一能力所带来的副作用。泛型正如其名称所暗示的:它是一种方法,通过它可以编写出更“泛化”的代码,这些代码对于它们能够作用的类型有更少的限制,因此单个的代码段能够应用到更多的类型上。原创 2018-01-06 21:58:30 · 2158 阅读 · 1 评论 -
Java编程思想读书笔记(四)第17章-容器深入研究
存储一组元素最快的数据结构是数组,所以用它来表示键的信息(请小心留意,我是说键的信息,而不是键本身)。但是因为数组不能调整容量,因此就有一个问题:我们希望在Map中保存数量不确定的值,但是如果键的数量被数组的容量限制了,该怎么办?更高的负载因子可以降低表所需的空间,但会增加查找代价,这很重要,因为查找是我们在大多数时间里所做的操作(包括。因为get()是使用最多的操作,求余数的%操作是其开销最大的部分,而使用2的整数次方可以消除此开销(也可能对hashCode()有些影响)。Java容器类类库采用。原创 2018-01-06 22:10:22 · 1975 阅读 · 1 评论 -
Java编程思想读书笔记(五)第18章-Java IO系统
ByteBuffer依然是实际存储数据的地方,“支持”着前面的视图,因此对视图的任何修改都会映射成为对ByteBuffer中数据的修改。我们可以通过一个字节数组来使用对象序列化,从而实现对任何可Serializable对象的“深度复制”(deep copy)——深度复制意味着我们复制的是整个对象网,而不仅仅是基本对象及其引用。文件加锁对其他的操作系统进程是可见的,因为Java的文件加锁直接映射到了本地操作系统的加锁工具。缓冲器容纳的是普通的字节,为了把它们转换成字符,我们要么在输入它们的时候对其进行。原创 2018-01-06 22:20:12 · 1555 阅读 · 1 评论 -
Java编程思想读书笔记(六)第19章-枚举类型
所有的enum类都继承自java.lang.Enum类。由于Java不支持多重继承,所以你的enum类不能再继其他类,然而,在我们创建一个新的enum时,可以同时实现一个或多个接口。通过相应的enum实例,我们可以调用其上的方法。这通常也称为表驱动的代码(table-driven code,请注意它与前面提到的命令模式的相似之处)。编译器将枚举类(enum)标记为final类,所以enum类无法被继承。与EnumSet一样,enum实例定义时的次序决定了其在EnumMap中的顺序。原创 2018-01-06 22:22:34 · 990 阅读 · 0 评论 -
Java编程思想读书笔记(七)第20章-注解
目录:Java编程思想(一)第1~13、16章 Java编程思想(二)第14章-类型信息 Java编程思想(三)第15章-泛型 Java编程思想(四)第17章-容器深入研究 Java编程思想(五)第18章-Java IO系统 Java编程思想(六)第19章-枚举类型 Java编程思想(七)第20章-注解 Java编程思想(八)第21章-并发 注解(也被称为元数据)为我们在代原创 2018-01-06 22:24:40 · 1106 阅读 · 1 评论 -
Java编程思想读书笔记(八)第21章-并发
线程可以驱动任务,因此你需要一种描述任务的方式,这可以由Runnable接口来提供。要想定义任务,只需实现Runnable接口并编写run()方法,使得该任务可以执行你的命令。当从Runnable导出一个类时,它必须具有run()方法,但是这个方法并无特殊之处——它不会产生任何内在的线程能力。要实现线程行为,你必须显式地将一个任务附着到线程上。线程的一个额外好处是它们提供了轻量级的执行上下文切换(大约100条指令),而不是重量级的进程上下文切换(要上千条指令)。原创 2018-01-06 22:32:40 · 2547 阅读 · 1 评论