Thinking In Java:第一章 对象入门,第二章 一切皆对象

第一章 对象入门java

1、抽象的进步程序员

全部编程语言的最终目的都是提供一种“抽象”方法。解决问题的复杂程度直接取 决于抽象的种类及质量。web

一、面向对象程序设计方法数据库

(1)万物皆对象。编程

(2)对象间经过消息传递彼此关联。数组

(3)每一个对象都有本身的存储空间,可容纳其余对象。安全

2、对象的接口服务器

3、实现方案的隐藏多线程

4、方案的重复使用编程语言

5、继承:从新使用接口

6、多形对象的互换使用

7、对象的建立和存在空间

8、违例控制:解决错误

9、多线程

多线程处理一个最多见的例子就是用户界面。利用线程,用户按下按钮,程序当即作出相应,而不是让用户等待程序完成了当前任务以后才开始响应。

共享资源!若是有多个线程同时 运行,并且它们试图访问相同的资源,就会遇到一个问题。为了解决这个问题,引入了锁机制。synchronized关键字。

10、永久性

程序退出后,对象仍然能保存它的所有信息,这将时一件很是有价值的事情,下次启动时,对象仍然在那里,里面保留的信息仍然是程序上一次运行时的那些信息。固然,能够将信息写入一个文件或者数据库,从而达到相同的效果。但尽管可将全部东西都看做一个对象,若是能将对象声明成“永久性”,并令其为咱们 提供以前退出时应保留的信息,那岂不是美哉。如今好像还作不到,还须要存在文件里或者数据库里,很麻烦。

11、java和因特网

一、什么是web?

客户端/服务端系统的基本思路是咱们能在一个统一的地方集中存放信息资源。

通常将数据集中保存在某个数据库中,根据其余人或者机器的请求将信息传递给对方。将各类元素集中到一块儿,信息仓库、用于投递信息的软件以及信息及软件所在的那台机器,它们联合起来遍称做“服务器server”。

而对那些驻留在远程机器上的软件,它们须要与服务器通讯,取回信息,进行适当的处理,而后再远程机器上显示出来,这些就叫做“客户端client”。

可能会有成千上万的客户同时向服务器发送请求,好比秒杀,任何微小的延误都是不能忽视的,为尽量缓解潜伏的问题,程序员须要谨慎的坟山任务的处理负担。通常能够考虑让客户机负担部分处理任务,但有时亦可分派给服务器所在地的其它机器,那些机器亦叫作“中间件”。

二、客户端编程

(1)插件

(2)脚本编制语言

插件形成了脚本编制语言的爆炸性增涨。经过脚本语言,可将用于本身客户端的源码直接插入HTML页,而对那种语言进行解释的插件会在HTML页显示的时候自动激活。脚本语言通常都倾向于简化,易于理解。从属于HTML页的一些简单正文,因此只需向服务器发出对那个页的一次请求,便可很是快的载入。缺点是咱们的代码所有暴露在人们面前。

脚本语言真正面向的是特定类型问题的解决,其中主要涉及如何建立更丰富、更具备互动能力的图形用户界面(GUI)。

(3)Java

Java经过“程序片Applet”巧妙的解决了客户端编程的问题,好比多线程操做、数据库访问、联网程序设计记忆分布式计算等等。

(4)ActiveX

微软的ActiveX,对抗Java而存在的。听说ActiveX是web页面中使用“历史遗留”代码的最佳途径。

(5)安全

自动下载和经过因特网运行程序听起来就象是一个病毒制造者的梦想。在客户端的编程中,ActiveX带来了 最让人头痛的安全问题。点击一个 Web站点的时候,可能会随同HTML 网页传回任何数量的东西:GIF 文件、 脚本代码、编译好的Java 代码以及ActiveX 组件。有些是无害的;GIF文件不会对咱们形成任何危害,而脚 本编制语言一般在本身可作的事情上有着很大的限制。Java 也设计成在一个安全“沙箱”里在它的程序片中 运行,这样可防止操做位于沙箱之外的磁盘或者内存区域。 ActiveX是全部这些里面最让人担忧的。

(6)因特网和内联网

三、服务器端编程

四、一个独立的领域:应用程序

12、分析和设计

Grady Booch 面向对象分析与设计 第三版

一、创建需求分析和系统规格

二、拿出一套设计方案

日结,3月16日:45/1=45页/天,688/45=15天,预计3月31日完成!

第二章 一切皆对象

1、用句柄操纵对象

2、全部对象都必须建立

建立句柄时,咱们但愿它同一个新对象链接。一般用new关键字达到这一目的。

一、保存到什么地方

(1)寄存器

这是最快的保存区域,由于它位于和其它全部保存方式不一样的地方:处理器内部。然而,寄存器的数量十分有限,因此寄存器是根据须要由编译器分配,咱们没有直接的控制权,也不可能在本身的程序里找到寄存器存在的任何痕迹。

(2)栈

驻留于常规RAM(随机访问存储器)区域,但可经过它的“栈指针”得到处理的直接支持。栈指针若向下移,会建立新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。

建立程序时,java编译器必须准确地知道栈内保存的全部数据的长度以及存储时间。这是因为它必须生成响应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,因此监管有些Java数据要保存在栈里,特别是对象句柄,但Java对象并不放在其中。

(3)堆

一种常规用途的内存池(也在RAM区域),其中保存了Java对象。和栈不一样,堆没必要知道要分配多少存储空间,也没必要知道数据要在堆内停留屡次实践,所以,用堆保存数据时会获得更大的灵活性。为达到灵活性,必然付出必定的代价,代价就是分配存储空间时会花掉更长的时间。

(4)静态存储

这里的静态是指位于固定位置。

程序运行期间,静态存储的数据将随时等候调用,可用static关键字指出一个对象的特定元素是静态的。但java对象自己永远不会置入静态存储空间。

(5)常数存储

常数值一般直接置于程序代码内部,这样作最安全,可考虑将它们置入只读存储器ROM。

(6)非RAM存储

若数据彻底独立于一个程序以外,则程序不运行时仍可存在,并在程序的控制范围以外。其中两个最主要的例子就是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,一般会发给另外一台机器。而对于固定对象,对象保存在磁盘中。

二、特殊状况:主要类型

基本类型 封装类型 大小
boolean Boolean 1位
char Character 16位,2字节
byte Byte 8位,1字节
short Short 16位,2字节
int Integer 32位,4字节
long Long 64位,8字节
float Float 32位,4字节
double Double 64位,8字节

注:

(1)字节是计算机信息技术用于计量存储容量的一种计量单位,做为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。最经常使用的字节是八位的字节,即它包含八位的二进制数。

(2)默认是double类型,3.14是double类型;3.14F就是 float类型。

三、Java的数组

3、绝对不要清除对象

做用域

4、新建数据类型:类

一、字段和方法

5、方法、自变量和返回值

一、自变量列表

6、构建Java程序

一、名字的可见性

二、使用其它组件

三、static

static做为一个静态方法,在载入类的时候就被载入到内存中,不管你用不用都占用这个位置。

单例模式,在用到这个实例调用方法的时候,方法才会被加入到内存中,当对象不用的时候,GC会将方法回收,效率高了很是多。

单例是类实例,占用的内存空间是堆空间,而static修饰的则被加载到方法区。

堆的优点是能够在程序运行时,动态地分配内存大小,可是正是因为这个缘由,它的存取速度较慢。

栈的优点是,存取速度比堆要快,仅次于寄存器,栈数据能够共享。但缺点是,存在栈中的数据大小和生存期是必须肯定的,缺少灵活性。

相关文章
相关标签/搜索