課程目錄

本套可課程為“使用Java(高清版)如何編寫程序教學視頻”,是java編程指導的好教材,大學資源網收集、整理。
      Java越來越受到大家的青睞,越來越多的公司都選擇運用Java及其相關技術,例如J2EE技術來構建它們的應用系統(tǒng)。可是,把握好 Java 語言并不是一件能夠輕松完成的任務,如何真正把握 Java 語言,然后編寫出健壯的、高效的、靈敏的程序是Java程序員們面臨的重大挑戰(zhàn)。 《Java編程思想》就是一本能夠讓Java程序員輕松面對這一挑戰(zhàn),并結尾取得勝利的經典書籍。本書淺顯易懂、循序漸進地把咱們領入Java的國際,讓咱們在不知不覺中就學會了用 Java 的思想去考慮問題、處理問題。本書不僅合適 Java 的初學者,關于有經歷的Java程序員來說,每次閱讀本書也總是能夠有新的領會,這正是本書的魅力所在。 本書的第二版由侯捷先生翻譯,他現(xiàn)已把翻譯原著這項工作做到了極致,咱們在翻譯過程中總是誠惶誠恐,一方面害怕曲解了原著的意思,另一方面也害怕破壞了第二版譯本現(xiàn)已做出的讓廣闊中國讀者認可本書的種種努力。 咱們在翻譯本書的過程中力求終于原著。關于本書中出現(xiàn)的大量的專業(yè)術語盡量遵循標準的譯法,并在有能夠引起歧義之處著上了英文原文,以方便讀者的對照理解。 全書的翻譯由陳昊鵬和饒若楠合作完成,薛翔、郭嘉和方小麗也參與了全書的翻譯工作。由于咱們水平有限,書中出現(xiàn)錯誤與不妥之處在所難免,懇請讀者批評指正。
      Java 已由專業(yè)的 Java 開發(fā)人員、設計師和愛好者團體進行測試、完善、擴展和驗證。Java 旨在竭盡所能為最廣泛的計算平臺開發(fā)可移植的高性能應用程序。通過使應用程序在異構環(huán)境之間可用,公司能夠提供更多的效勞,提高結尾用戶生產力并加強溝通與協(xié)作,然后明顯降低公司和消費類應用程序的擁有成本。Java 是開發(fā)人員的無價之寶,使他們能夠:

    在一個平臺上編寫軟件,然后即可在幾乎一切其他平臺上運轉,創(chuàng)立可在 Web 瀏覽器中運轉并可拜訪可用 Web 效勞的程序,開發(fā)適用于在線論壇、存儲、投票、HTML 格式處理以及其他用途的效勞器端應用程序
將采用 Java 語言的應用程序或效勞組合在一起,構成高度定制的應用程序或效勞,為移動電話、遠程處理器、微控制器、無線模塊、傳感器、網關、消費商品及幾乎其他任何電子設備編寫強大而高效的應用程序,許多院校已開設了 Java 平臺程序設計課程。Oracle Academy 面向中小學、職業(yè)教育和高等院校提供了用于教學的全面的軟件、課程、托管技術、職工培訓、支持和認證資源組合,其間包括將支持數(shù)十萬學生的 Java 商品。此外,開發(fā)人員還能夠通過下列辦法提高自己的 Java 編程技能:瀏覽 Oracle Java 開發(fā)人員 Web 站點、訂閱 Java 技術簡報和 Java 雜志、運用 Java 教程和 Java 編程中間新手入門,以及報名參加 Web 課程、虛擬課程或由教師指導的課程和認證。
     法使目標進入正常狀況;假如能夠的話,避免調用其他辦法”。在結構器內唯一能夠安全調用的那些辦法是基類中的final辦法(也適用于private辦法,它們主動歸于final辦法)。
30.  接口:一切辦法主動為public的,一切的域都是隱式的為static和final的。
31.  協(xié)變返回類型:Java SE5中添加了協(xié)變返回類型,它表明在導出類中的被掩蓋辦法能夠
返回基類辦法的返回類型的某種導出類型。
32.  接口承繼能夠用extends承繼多個接口,這種extends用法只限于接口承繼。如:
Interface Vampire extends DangerousMonster, Lethal{…} 33.  內部類:在內部類假如需求生成對外部類目標的引證,能夠運用外部類的名字后面緊跟
圓點和this(如:outerClass.this).要想直接創(chuàng)立內部類的目標,你不能按照你想象的辦法,去引證外部類的名字,而是必須運用外部類的目標來創(chuàng)立該內部類目標,OuterObject.new Inner();。
假如界說一個匿名內部類,并且期望它運用一個在其外部界說的目標,那么編譯器會要求其參數(shù)引證是final的。
在匿名內部類中,假如想要做些結構器的工作,則能夠運用實例初始化。關于匿名類而言,實例初始化的實際效果就是結構器,當然它受到了限制—你不能重載實例初始化辦法,所以你僅有一個這樣的結構器。匿名內部類既能夠擴展類,也能夠實現(xiàn)接口,可是不能兩者兼?zhèn)洹2⑶壹偃缡菍崿F(xiàn)接口,也只能實現(xiàn)一個接口。 34.  嵌套類:static 內部類。一般內部類不能有static數(shù)據(jù)和static字段,也不能包括嵌套類。 35.  protected的權限:只要所屬類及其子類,以及與所屬類同一個包中的類能拜訪protected
域或辦法。
36.  在辦法和效果域內的內部類只是限制了其的效果域規(guī)模。超過這個規(guī)模就不能拜訪了。 37.  運用內部類最吸引人的原因是:每個內部類都能獨立地承繼自一個(接口的)實現(xiàn),所
以無論外為了是不是現(xiàn)已承繼了某個(接口的)實現(xiàn),關于內部類都沒有影響。
38.  格式化輸出:System.out.format()與printf()是等價的,它們只需求一個簡單的格式化字
符串,加上一串參數(shù)即可,每個參數(shù)對應一個格式修飾符。
格式化說明符:%[argument_index$][flags][width][.precision]conversion Argument_index:能夠指定參數(shù)的方位;
Flags:在默許的情況下,數(shù)據(jù)是右對齊的,能夠通過設置標志為“-”來改變對齊方向。 With:用來指明最大尺寸,通過必要時添加空格來確保一個域至少達到某個長度。 Precision:關于不一樣的數(shù)據(jù)類型,有不一樣的意義。用于String時,表明輸出字符的最大數(shù)量。用于浮點數(shù)時,表明小數(shù)部位要顯示出來的位數(shù)(默許是6位數(shù)),小數(shù)位過多舍入,太少則在尾部補0。關于整數(shù),則會報反常。
39.  正則表達式:其間量詞有三種類型:貪婪型,勉強型,占有型。
40.  動態(tài)加載:一切的類都是在對其第一次運用時,動態(tài)加載到JVM中的。當程序創(chuàng)立第
一個對類的靜態(tài)成員的引證時,就會加載這個類。這個證明結構器也是類的靜態(tài)辦法,即便在結構器之前并沒有運用static關鍵字。因此,運用new操作符創(chuàng)立類的新目標也會被當?shù)箅y類的靜態(tài)成員的引證。因此,Java程序在它開端運轉之前并非被徹底加載,其各個部分是在必需時才加載的。
41.  當運用“.class”來創(chuàng)立對Class目標的引證時,不會主動地初始化該Class目標。為了
運用類而做的準備工作實際上包括三個步驟:1. 加載,由類加載器執(zhí)行,找到Class目標;2. 連接,驗證類中字節(jié)碼,為靜態(tài)域分配存儲空間;3. 初始化,假如有超類,則對其初始化,執(zhí)行靜態(tài)初始化器和靜態(tài)初始化塊。 假如一個static final值是“編譯器常量”,那么這個值不需求對類進行初始化就能夠被讀
取。假如只是將一個域設置為static和final的,但不是“編譯器常量”時,就需對類進行初始化。假如一個static域不是final的,那么對它的拜訪,總是要求在它被讀取之前,要先進行連接(為這個域分配存儲空間)和初始化(初始化該存儲空間)。
42.  泛化的Class引證:通過泛型語法對Class引證所指向的Class目標的類型進行限制。為
了在運用泛化的Class引證時放松限制,運用通配符“?”,這是Java泛型的一部分。 ClassintClass = int.class;為了創(chuàng)立一個Class引證,它被限制為某種類型,或該類型的任何子類型,你需求將通配符與extends關鍵字相結合,創(chuàng)立一個規(guī)模。Class = int.class. 43.  RTTI是編譯時能夠獲取類信息。而反射是運轉時獲取類信息。RTTI和反射之間的真正的
差異只在于,關于RTTI來說,編譯器在編譯時打開和檢查.class文件按。(換句話說,咱們能夠用“一般辦法調用目標的一切辦法。”)而關于反射機制來說,.class文件在編譯時無法獲取,所以在運轉時打開和檢查.class文件。
44.  實現(xiàn)多線程要實現(xiàn)Runnable接口并編寫run()辦法。或許承繼Thread類,實現(xiàn)run()方
法。
45.  Java虛擬機通過裝載、連接和初始化一個Java類型,使該類型能夠被正在運轉的Java
程序所運用。連接階段分為三個子步驟:驗證、準備和解析。一切的Java虛擬機實現(xiàn)必需在每個類或接口首次主動運用時初始化,有六種情形:
1) 當創(chuàng)立某個類的新實例時(new,不明確的創(chuàng)立,反射、克隆或許反序列化); 2) 當調用某個類的靜態(tài)辦法時; 3) 當運用某個類或接口的靜態(tài)字段,用final修飾的靜態(tài)字段在外,它被初始化為一個
編譯時的常量表達式;
4) 當調用Java API中的某些反射辦法時,比如Class中的辦法或許Java.lang.reflect包中
的類辦法;
5) 當初始化某個類的子類時;
6) 當虛擬機啟動時某個被標明為啟動類的類(含有main()辦法)。 初始化一個類包括兩個步驟:
1) 假如類存在直接超類的話,且直接超類還沒有被初始化,就先初始化直接超類; 2) 假如累存在一個類初始化辦法,就執(zhí)行此辦法。
初始化接口不需求初始化它的父接口,因此初始化一個接口只需一步:假如接口存在一個接口初始化辦法的話,就執(zhí)行此辦法。
46.  卸載類型:Java虛擬機中類的生命周期和目標的生命周期很類似。虛擬機裝載、連接并
初始化類,使程序能運用類,當程序不在引證它們的時分可選地卸載它們。運用啟動類器裝載的類型永久是可觸及的,所以永久不會被卸載。
47.  運用notify()時,在眾多等候同一個鎖的任務中只要一個會被喚醒,因此假如你期望使
用notify(),就必須保證被喚醒的是恰當?shù)娜蝿铡A硗猓瑸榱诉\用notify(),一切任務必須等候一樣的條件,由于假如你有多個任務在等候不一樣的條件,那么你就不會曉得是不是喚醒了恰當?shù)娜蝿铡<偃邕\用notify(),當條件發(fā)生變化時,必須只要一個任務能夠從中受益。最后,這些限制對一切能夠存在的子類都必須總是起效果的。假如這些規(guī)則中有任何一條不滿足,那么你就必須運用notifyAll()而不是notify(). 48.  內部類:
 假如想從外部類的非靜態(tài)辦法之外的恣意方位創(chuàng)立某個內部類的目標,那么必須像
在main()辦法中那樣,具體地指明這個目標的類型:OuterClassName.InnerClassName.  在內部類中生成對外部類目標的引證,能夠運用外部類的名字后面緊跟圓點和this:
OuterClassName.this; 主動創(chuàng)立某個內部類的目標,比如在main辦法中,必選在new
 匿名內部類,new ClassConstructor(){};這個class能夠是一個虛類,也能夠是一個普
通類。假如界說一個匿名內部類,并且期望它直接運用一個在其外部界說的目標,那么編譯器會要求其參數(shù)引證是final的,假如不是匿名內部類直接運用,而是傳給其基類的結構器,不需求為final。匿名內部類與正規(guī)的承繼相比有些受限,由于匿名內部類既能夠擴展類,也能夠實現(xiàn)接口,可是不能兩者兼?zhèn)洌⑶壹偃缡菍崿F(xiàn)接口,也只能實現(xiàn)一個接口。
49.  嵌套類:將內部類聲明為static。一般的內部類目標隱式地保存了一個引證,指向創(chuàng)立
它的外圍類目標。要創(chuàng)立嵌套類的目標,并不需求其外圍類的目標。不能從嵌套類的目標中拜訪非靜態(tài)的外圍類目標。
嵌套類與一般的內部類還有一個差異。一般內部類的字段與辦法,只要放在類的外部層次上,所以一般的內部類不能有static數(shù)據(jù)和static字段,也不能包括嵌套類。可是嵌套類能夠包括一切這些東西。
50.  為什么需求內部類?  從多重承繼的視點來講:每個內部類都能獨立地承繼自一個(接
口的)實現(xiàn),所以無論外圍類是不是現(xiàn)已承繼了某個(接口的)實現(xiàn),關于內部類都沒有影響。從這個視點看,內部類使得多重承繼的處理方案變得完整。接口處理了部分問題,而內部類有效地實現(xiàn)了“多重承繼”。也就是說,內部類允許承繼多個非接口類型。 51.  局部內部類與匿名內部類:既然局部內部類的名字在辦法外是不可見的,那為什么咱們
仍然運用局部內部類而不是匿名內部類呢?唯一的理由是,咱們需求一個已命名的結構器,或許需求重載結構器,而匿名內部類只能用于實例初始化。所以運用局部內部類而不運用匿名內部類的另一個理由就是,需求不止一個該內部類的目標。 52.  通過運用泛型,就能夠在編譯期間防止將錯誤類型的目標放置到容器中。
53.  ListIterator是一個愈加強大的Iterator的子類型,它只能用于各種List類的拜訪。盡管
Iterator只能向前移動,可是ListIterator能夠雙向移動。
54.  意識到Arrays.asList()發(fā)生的List目標會運用底層數(shù)組作為其物理實現(xiàn)是很重要的。只要
你執(zhí)行的操作會修正這個List,并且你不想原來的數(shù)組被修正,那么你就應該在另一個容器中創(chuàng)立一個副本。
55.  一切標準反常類都有兩個結構器:一個是默許結構器;另一個是接受字符串作為參數(shù),
以便能把信息放入反常目標的結構器。
56.  throws,反常說明關鍵字,它歸于辦法聲明的一部分,緊跟在形式參數(shù)列表之后。
57.  有時期望把剛捕獲的反常從頭拋出,尤其是在運用Exception捕獲一切反常的時分,重
拋反常會把反常拋給上一級環(huán)境中的反常處理程序,同一個try塊的后續(xù)catch子句將被忽略。
58.  運轉時反常,其類型很多,它們會主動被JAVA虛擬機拋出,所以不必在反常說明中把
它們列出來。它們也被稱為“不受檢查反常”。
59.  當掩蓋辦法的時分,只能拋出在基類辦法的反常說明里列出的那些反常。 60.  任何根本類型都不能作為類型參數(shù):不能創(chuàng)立ArrayList之類的東西。 61.  總結:泛型代碼與JVM 
① 虛擬機中沒有泛型,只要一般類和辦法。 ② 在編譯階段,一切泛型類的類型參數(shù)都會被Object或許它們的限制邊界來替換。
(類型擦除) ③ 在承繼泛型類型的時分,橋辦法的組成是為了避免類型變量擦除所帶來的多態(tài)災
難。

郵箱
huangbenjincv@163.com

浮梁县| 潢川县| 祁连县| 余江县| 嘉善县| 公主岭市| 冕宁县| 霞浦县| 凤冈县| 平罗县| 襄汾县| 台江县| 夹江县| 油尖旺区| 乐清市| 阿拉善盟| 武邑县| 锡林郭勒盟| 洛川县| 绿春县| 嘉兴市| 东平县| 贡嘎县| 襄垣县| 磴口县| 新疆| 西盟| 龙川县| 丽江市| 通州市| 平遥县| 红桥区| 石河子市| 高阳县| 搜索| 海晏县| 昌乐县| 万安县| 溧水县| 建平县| 阿克苏市|