《Java編程思想個人總結 前四章》

Java編程思想個人總結 前四章

這是我的第一篇博客,內容也很簡單,先是打算記錄一下自己學習《Java編程思想》這本經典書籍的一些知識點,感覺自己在大學學習的知識太過於表面,這本書是在網上看別人推薦的,能夠讓我更深入的瞭解java,打算在工作之餘花半年左右的時間學習一遍。
目前只學習了第一章:對象導論,不出意外的話這篇文章會持續更新,這裏的知識點是針對我自己而言的,包括我不懂,覺得所認知的不夠清晰,以及我覺得十分重要的。
第一章:對象導論
1.對象的五個基本特徵
a.萬物皆對象。
b.程序是對象的集合,他們通過發送消息來告知彼此。
c.每個對象都有自己的由其他對象所構成的存儲。
d.每個對象都擁有類型。
e.某一個特定類型的所有對象都可以接收同樣的消息。

2.訪問控制的原因
a.讓客戶端程序員無法觸及他們不應該觸及的部分.
b.允許庫設計者可以改變類內部的工作方式而不同擔心會影響客戶端程序員.

3.向上向下轉型
a.向上轉型:將導出類看做是它的基類的過程
b.向下轉型:與向上轉型相反,但有一定的危險,這個危險的原因是因爲"單根繼承結構"

4.參數化類型
就是Java所謂的泛型:一個編譯器可以自動定製作用於特定類型的類.

5.對象的創建
一般是有兩種方法.
a.對象的存儲空間和生命週期可以編寫程序時確定,將對象置於堆棧或靜態存儲區域內來實現.
b.在被稱爲堆的內存池中動態地創建對象.

6.垃圾回收器能夠被設計用來處理內存釋放問題的依據.
a.所有對象都是繼承自當單根基類object
b.只能在堆上創建對象.

7.Java一開始就內置了異常處理,而且強制必須使用.
這些需要說的是,異常處理不是面向對象的特徵,在面嚮對象語言出現之前就存在.

8.客戶/服務器系統的核心思想是:系統具有一箇中央信息存儲池,用來存儲某些數據,它通常存在於數據庫中,你可以
根據需要將它分發給某些人員或機器集羣.

9.爲了延遲最小化,通常是分散給客戶端機器處理,有時會使用所謂的中間件將負載分散給在服務器的其他機器.

10.web就是一臺巨型服務器
一段信息不經修改就可以在任意型號的計算機上顯示,引入在客戶端瀏覽中運行程序的能力.

11.HTML(HyperText Markup Language)超文本標記語言被編程來實現復位表單上的數據或者提交表單上的數據給服務器,
通過web服務器都提供的通用網關接口(CGI)傳遞.

12.客戶端編程所邁出的最重要的一步就是插件(plug-in)開發,插件引發了遊覽器腳本語言(Scripting language)開發.

13.Java是通過applet以及使用Jave Web Start來進行客戶端編程的.

以上我是從第一章中收穫的知識.

第二章:一切都是對象
1.對象存儲的位置.
a.寄存器:最快的存儲區,位於處理器內部,按需分配,不能控制.
b.堆棧:位於通用RAM(隨機訪問存儲器),通過堆棧指針可以從處理器獲取支持,指針向下移動,分配新的內存;向上移動,
釋放內存,速度僅次於寄存器.創建程序時,Java系統必須知道存儲在堆棧內所有項的確切生命週期,以便上下移動指針.
Java某些數據是存儲於堆棧中-特別是對象引用,但是對象並不在其中.
c.堆:一種通用的內存池(RAM)存放所有的Java地偶像,堆不同於堆棧的好處:編譯器不需要知道存儲的數據在堆裏存活
多長時間.靈活性的代價:用堆進行存儲分配和清理可能要比用堆棧需要更多的時間.
d.常量存儲:常量值通常直接存放在程式代碼內部,安全不可改變.嵌入式系統中,常量會和其他部分分離開,會選擇存放在
ROM(只讀存儲器).
e.非RAM存儲:數據存活在程序之外,可以不受程序的任何控制:如流對象和持久化對象.Java提供了輕量化的支持.

2.new是將對象存儲在堆裏,直接賦值是創建一個並非是引用的"自動"變量,變量將"值"存儲,變量並置於堆棧中.

3.BigInteger支持任意精度的證書;BigDecimal支持任意精度的定點數,兩者都以速度換取了精度.

4.Java確保數組會被初始化,而且不能再他的範圍之外內訪問,是以每個數組上少量的內存開銷及運行時下標檢查爲代價的.
當創建一個數組對象時,實際就是創建了一個引用數組,並且每個引用都會自動被初始化爲一個特定值:關鍵字null

5.在類的方法的參數列表中傳遞的實際上也是引用.

6.若返回類型是void,return的關鍵字的作用只是用來退出方法.

7.Java意味着所有的文件都能夠自動存活於它們自己的名字空間,而且同一個文件內的每個類都有唯一的標識符.

8.java.lang是特定會自動被導入到每一個Java文件中.

9.main(string[] args)中的參數args是要用來存儲命令行參數.

10.Jav的嵌入式HTML是有Javadoc實現的.

第三章 操作符 && 第四章 控制執行流程
備註:因爲第三章跟第四章的對於我來說不了解的知識點不多,所以將兩章合一,有個特別要注意的地方是Java實現goto的方式會在11點介紹

1.在爲對象賦值的時候,是操作對象的引用,“將一個對象賦值給另一個對象”,實際是將"引用"從一個地方複製到另一個地方.c=d,那麼c和d都指向原本只有d指向的那個對象.

2.一元減號用於轉變數據的符號,一元加號的租用是較小類型的操作數提升爲int.

3.基本類型直接使用 == 和 != 判斷,所有對象可以用equals()來比較兩個對象的實際內容是否相同.

4.Java中e作爲自然對數的技術使用,1.39e的-43次方 = 1.39 * 10的-43次方.

5.“有符號"右移位操作符使用"符號擴展”.若符號爲正.則在高位插入0;若符號爲負,則在高位插入1.
如果對char,byte或者short類型的數值進行移位處理,那麼在移位進行之前,他們會被轉移爲int類型,結果也是int,且 只有數值右端的低5位纔有用.

6.類型裝換的原意是"模型鑄造"
如果執行"窄化轉換"的操作,可能面臨信息丟失的危險,編譯器強制進行裝換,對於"擴展轉換",則不必顯式地進行類型轉換.

7.Java允許我們把任意基本數據類型轉換成別的基本數據類型,布爾型除外.

8.將float或者double轉型爲整形時,對數字進行截尾.
使用Java.lang.Math的round()就可以得到舍入的結果.

9.對基本數據類型執行算術運算或按位運算,表達式總出現的最大的數據類型決定了表達式最終結果的數據類型.
在char,byte和short中,進行算術運算們都會返回一個int結果.

10.Java不需要sizeof()的原因是:所有數據類型在所有機器的大小都相同.

11.儘管goto扔是Java中的一個保留字,但在語言中並未使用,然而Java也能完成一些類似於跳轉的操作:break和continue其實不是一個跳轉,而是中斷迭代語句的一種方式.它都使用了"標籤"機制.標籤是後面跟有冒號的標識符:如label1:
在Java中,標籤起作用的唯一的地方剛好在迭代語句之前,而在迭代之前設置標籤的唯一理由是:希望嵌套另一個迭代或者一個開關.
a.一般的continue會退回最內層循環的頭部,並斷續執行.
b.帶標籤的continue會到達標籤的位置,並重新進入緊接在那個標籤後的循環.
c.一般的break會中斷並跳出當前循環.
d.帶標籤的break會中斷並跳出標籤所指的循環.

------------------------------------------------------------我是分隔符------------------------------------------------------------
第五章跟以後的內容應該會換一篇文章,不然會顯得文章太過累贅,以便日後自己查看,然後今天team裏有個同事離職了,接下來還有幾個也是離職的,公司老人說,你們新人一般都是1-2年會出現大規模的離職情況,我想問這是it業的常態嗎?還是因爲我們剛剛畢業或者畢業不久後就業者的心態就是如此?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章