`

Thinking in java notes

    博客分类:
  • java
阅读更多

 ============chapter 1 Basic===================

区分基类和派生类的方法:

1.在派生类中添加新的方法

2.在派生类中覆盖基类的方法

 

是和象的关系

是:完全替换

象:

派生类是否应该只覆盖基类中的方法。

 

通过使用后绑定来实现动态性

前绑定是编译器把调用在编译时就解析成绝对地址

后绑定通过特殊代码来代替绝对调用,代码用存储在对象中的信息来计算方法的地址。

因此每个对象的运行方式会根据这段特殊代码的内容而改变。

后绑定是Java的默认行为

 

upcast:将子类转成父类的过程。。。。。。(cast表示把东西浇筑到模子中去)

当消息发送给基类时,会根据具体的子类来调用相应的代码。

 

 

abstract表示你不想建立一个此类的对象,这个类只是为了表示能使用的接口。

interface是abstract概念的深化。不允许实现任何方法,从而将设计和实现完全分开。

 

 

 

抽象的数据类型==封装。。

对象的创建、使用、数据存储和控制其生命周期

1.堆(运行时才知道数量、寿命和确切的类型)还是栈(编写是知道数量、寿命和确切的类型)

    栈中分配存储单元只要一个汇编指令,而堆需要依实现而定。

    使用堆是基于对象都是很复杂,创建对象的开销远远大于分配存储的开销的假设以及更好的灵活性的假设

    java只使用堆的方式来实现存储。

2.对象的寿命

   在栈中创建的,编译器知道其寿命,会自动清理。而在堆中创建的编译器就不知道其寿命了(为什么???)

    java中使用垃圾回收的机制。

 

 

Collection和迭代器

存储分配问题和动态扩容问题。

添加对象和取出对象,取出对象时的问题:每次只能取出一个对象。解决方案:迭代器。

迭代器把集合对象抽象成了一个可以操纵的线性序列。

java1.0和1.1中使用的是Enumeration迭代器。现在用Iterator迭代器,功能更强大。

挑选容器:

1.不同的容器由不同的行为:Stack与List的行为就不同

2.不同的容器进行同一操作时由不同的效率:List、ArrayList和LinkedList

 

 

单根继承体系

从0开始,最好是单根继承。融合第三方类库,可以考虑多重继承或者适配器模式。

单根继承可以保证所有对象都有某种功能

单根继承可以使垃圾回收的实现变得更加容易

所有对象都提供运行时的类型信息,不会碰到无法判断对象类型的情况。这对异常处理之类的功能很有帮助。

 

 

下传和类型转换

把丢失的身份信息找回来。。

必须取得对象的reference和相应的类型信息。

下传的类型检查使程序的性能降低。也加重了程序编写的负担。

参数化类型机制使得可以方便的获取类型的信息

 

 

确保正确的清除

java的垃圾回收机制仅仅处理内存问题而不涉及到清除对象的其他方面【单根继承,只能用堆来创建对象】

所有能简化编程的东西都是以牺牲性能为代价的【在栈中的清理和分配都是自动的,但是失去了按需创建的能力】

单根继承和多态性也影响性能

没有办法知道什么时候调用垃圾回收程序,不能用于实时系统。

 

 

 

异常处理

绝大多数的异常处理方案都有一个问题,不是由语言强制的而要靠开发人员去遵守。

异常肯定能在某个地方得到处理,还提供了一种可靠的从错误状态下恢复的机制

Java的异常处理是从底层支持的,但是它不是一种面向对象的特性

 

 

 

并发

 

 

 

 

Persistence

Java提供轻量级persistence支持。

可以通过序列化或者jdo来实现。

 

 

 

Web

C/S

服务器:信息库、分发信息的软件和存储信息和分发信息的软件的机器合起来称为服务器。

关键:服务器存储信息并能把信息分发到客户端。

事务处理。

软件维护。

多系统、多硬件支持。

性能问题。

为了降低延时,将大多数处理放到客户端。

 

B/S

 

客户端编程:html,python,perl

插件:客户端编程最重要的步骤之一。提供了客户端编程的后门

.NET平台(JVM和Java类库)和C#(Java)

安全性:java的sandbox,没有文件IO,applet的电子签名框架

 

先用java写,再翻译成C++。。。。

 

 

JIT,HostSpot

 

 

 

============chapter 2 万物皆对象===================

Java是更纯粹的面向对象语言。

C++和java都是混合语言

C和C++必须知道是在用对象还是引用,Java中一切都是对象,通过对象的引用来操纵。

对象引用也可以单独存在。此时只创建了一个引用而没有创建对象。

 

你必须创建所有对象

    创建引用后就得链接到对象:引用初始化。

数据存储地:

    寄存器(数量有限,由编译器分配)

    栈:CPU通过栈指针来访问,对象的引用放在栈内

    堆:灵活,慢

    静态存储:在整个程序运行期间都可以访问。

    固定存储:常量值

    非内存存储:独立于程序。persistance 和 stream

特例:primitive类型

    非引用类型,放在栈中。有对应的Wrapper类别。

高精度数值:BigDecimal,BigInteger 支持任意精度

Java中的数组:

    自动初始化,null或者基本类型值。

    边界检查

 

你永远都不需要清理对象:

 作用域:作用域由{}来表示,在作用域内定义的变量只能用到这个作用域结尾。

 在Java中不能象C和C++一样隐藏变量{int x = 0;{int x=0;}}

对象的作用域:{string str = "1111";}

   str会在作用域结束后消失,但是对象"1111"不会,要等待垃圾收集工具。

 

 

 

 

 

 

============chapter 7 多态性===================

多态性提供了另一个层面的实现和接口的分离,即分离做什么和怎么做。。

隐藏实现通过将细节设计成private来实现实现和接口的分离。

多态方法调用可以让类表现出各自所独有的特点。

多态性:dynamic binding

后绑定:late binding

运行时绑定:run-time binding

分享到:
评论

相关推荐

    Thinking in Java 4th Edition Annotated Solutions Guide

    根据提供的文件信息,以下是对文件《Thinking in Java 4th Edition Annotated Solutions Guide》中所包含知识点的详细解释: 首先,文件标题《Thinking in Java 4th Edition Annotated Solutions Guide》指出了这是...

    Thinking in java .txt

    《Thinking in Java》第四版由布鲁斯·埃克尔(Bruce Eckel)撰写,他是MindView公司的总裁。这本书被广泛认为是学习Java编程语言的经典教材之一。从读者的反馈来看,《Thinking in Java》不仅覆盖了Java的核心概念...

    Thinking in Java 4 源码 导入IDEA可直接运行

    《Thinking in Java》是Bruce Eckel的经典之作,第四版(TIJ4)更是Java程序员必读的书籍之一。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程等众多主题。源码是...

    Thinking in java4(中文高清版)-java的'圣经'

    研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计...

    Thinking in Java 练习题答案

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书的练习题是学习Java的重要组成部分,因为它们能够帮助读者巩固理论知识并提升实践能力。以下是对"Thinking in ...

    Thinking in Java 4th Edition + Annotated Solution Guide (代码)英文文字版 带书签 有答案

    《Thinking in Java》是Bruce Eckel的经典之作,第四版涵盖了Java编程语言的广泛主题,适合初学者和有经验的程序员。这本书深入浅出地讲解了Java的核心概念和技术,旨在帮助读者建立坚实的编程基础,并理解面向对象...

    Thinking In Java-Java 编程思想(中英文版 第四版)

    Thinking In Java-Java 编程思想(中英文版 第四版) Thinking In Java-Java 编程思想(中英文版 第四版)

    《thinking in java》第三版完整PDF书籍+习题答案(中文版)

    《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术。第三版是此书的一个重要里程碑,它涵盖了Java语言的诸多关键特性,...

    Thinking in Java Second Edition.doc

    在众多关于Java的学习材料中,《Thinking in Java》第二版以其独特的视角和方法论成为了一本备受推崇的教科书。 本书由Bruce Eckel所著,作为一本权威性的Java编程教程,它不仅仅是向读者介绍Java语言的语法和基础...

    Thinkingin Java电子书

    《Thinking in Java》是一本备受推崇的Java编程教材,由Bruce Eckel撰写,被誉为Java学习者的必读之作。这本书深入浅出地介绍了Java语言的核心概念和技术,覆盖了从基础到高级的主题,对于有一定Java基础的读者来说...

    thinking in java 第四版 源码

    《Thinking in Java》是Bruce Eckel的经典之作,第四版更是被广大Java开发者视为学习和进阶的重要参考书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程、GUI...

    Thinking in Java 习题答案

    《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其详尽的解释、丰富的示例和实践性强的习题深受程序员喜爱。"Thinking in Java 习题答案"是配套的解答集,...

    Thinking in java 电子书

    《Thinking in Java》是 Bruce Eckel 编著的一本经典的Java编程教材,它深受程序员喜爱,被誉为学习Java的必备参考书。这本书全面深入地探讨了Java语言的核心概念和技术,不仅适合初学者,也对有经验的程序员提供了...

    thinking in java annotated solution guide 电子书格式

    《Thinking in Java》是Bruce Eckel的经典Java编程教材,它以其深入浅出的讲解和全面系统的内容深受程序员喜爱。这本书的Annotated Solution Guide是作者为读者提供的配套解答指南,帮助读者理解和解决书中练习题,...

    Thinking In Java 源码

    《Thinking in Java》是Bruce Eckel的经典Java编程书籍,它深入浅出地讲解了Java语言的核心概念和技术。这本书不仅适合初学者,也对有经验的程序员提供了深入理解Java的宝贵资源。现在,我们有机会免费下载这本书的...

    Thinking in java java核心思想英文原版(带目录)

    Thinking in java java核心思想英文版(带目录),学java必备

    Thinking in Java (中文版)-经典书籍

    他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同时还是《Black Belt C++》文集的编辑。他的《Thinking in C++》一本书在1995年被评为...

    Thinking in Java

    《Thinking in Java》是Bruce Eckel的经典之作,它被誉为学习Java编程的最佳教材之一。这本书以其深入浅出的讲解方式和全面覆盖的Java知识点而受到广大程序员的推崇。本压缩包包含的是《Thinking in Java》的第三版...

Global site tag (gtag.js) - Google Analytics