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修飾的則被加載到方法區。

堆的優點是能夠在程序運行時,動態地分配內存大小,可是正是因爲這個緣由,它的存取速度較慢。

棧的優點是,存取速度比堆要快,僅次於寄存器,棧數據能夠共享。但缺點是,存在棧中的數據大小和生存期是必須肯定的,缺少靈活性。

相關文章
相關標籤/搜索