JAVA全方位學習

java 2全方位學習 J2ME無線java應用開發  JAVA手機程序設計入門與應用
1、對於一般PC平臺來說,Java的程序分成兩大類,一個是在PC的操作系統上通過JVM直接運行的Java Application,另一種是通過瀏覽器中附帶的JVM運行的Java Applet。
2、<applet code="要運行的class文件名稱" width="顯示的寬度" height="顯示的高度"></applet>。
3、javac,java,appletviewer。
4、java是用unicode作爲字符集的,所以我們在Java程序中使用中文或是英文甚至是其他的語言作爲class名稱、變量名稱都可以。
5、JFC-java foundation classes,GUI-graphical uesr interface。
6、java -jar Java2D.jar。
7、PDA-個人數據處理。jpda-Java Platform Debugger Architecture。

第4章 程序基本單元
8、關鍵字與保留字的區別。標誌符的魔力。Literal的含義。變量的意義,變量命名的原則。
9、基本數據類型:整型,浮點,其他類型。
10、爲什麼數值範圍正負值分開,無理數或是無窮小數的表示問題。其核心是精度問題。浮點數不存在0這個數值,所以會產生誤差。
11、其他數據類型:boolean,char,常用轉義字符,特殊字符的表示方法。
12、Java兩種變量的模式:成員變量(member variable),局部變量(local variable)。成員變量初始值在聲明時就指定了。而局部變量則不會,要求用戶自己設定初始值。
13、類型轉換分爲自動類型轉換(promotion)和強制類型轉換(casting)兩種。其中每種又分爲放大(widening)和縮小(narrowing)兩種。放大轉換屬於自動類型轉換,縮小轉換屬於強制類型轉換。
14、數據類型的後面加上一個英文字母,是由於Java對於literal默認的數據類型有關,基本上Java對整數的lieral默認爲int型,而對於浮點數的literal默認爲double型。
15、Java裏有個特殊的類,可以像一般的基本數據類型一樣使用,它就是String-字符串。

第5章 Java的表達式
16、5%2與5%-2與-5%2與-5%-2的區別。
17、比較運算符的結果只有兩種,true和flase。instanceof?
18、邏輯與和一般與的差別。在需要改變變量的值時,用一般與。通常使用邏輯運算符,因爲運算速度會快一些。
19、邏輯運算的優先級在比較運算符之下。
20、賦值運算符是所有運算符中最低的。賦值運算符從右邊運算到左邊。而算術運算符是從左邊運算到右邊。並且賦值運算符的左邊只能有一個變量存在。
21、位運算符(bitwise)。 &,|,^,~(complement)。位運算符只能用於整型數據類型中。位移運算(shift)的用處。位移運算比較難。要理解位移運算的用途。瞭解減次運算的含義。     
22、運算符的優先級和結合性。

第6章 Java的語句
23、語句有很多種,粗略的把它們分爲四類:第一類是一般的語句,第二類是聲明語句,第三類是條件流程控制語句,第四類是循環控制語句。
24、對象的聲明與變量的聲明是不同的。對象在聲明後,必須進行實例化,而變量聲明是不需要的。
25、?:運算符的使用。
26、Switch的參數只能是(<byte、short、int或char變量>)的其中一種。 
27、for(<控制循環變量初始值設置>;<循環結束判斷條件語句>;<控制循環變量值改變方法>){<代碼>s}。千萬不使用浮點數作爲控制變量。由於浮點數誤差問題。
28、while(<循環結束判斷條件語句>){<代碼>s}。
29、do{<代碼>s} while(<循環結束判斷條件語句>)。
30、高級循環控制-嵌套循環。以及break和continue的使用。
31、標記<token>的使用。以冒號: 作爲結束。運用適當的break、continue和token可以增強程序的彈性。但不要亂用token。
32、必須瞭解註釋語句、if語句、switch語句、循環語句、break、continue和標記的使用與限制。
                                   
第7章 Java面向對象程序設計
33、對象是符合某種類定義所產生出來的實例(instance)。類是抽象的,而對象是實在的。屬性(attribute)是用來形容一個實例對象的,其實就是變量。方法(method)是對象自己的行爲或者是使用它們的方法,其實就是函數。屬性和方法稱爲對象的成員。類可以說是藍圖(blueprint),類中會定義許多產生該類對象時,所必須具備的一些屬性與方法。
34、繼承(inheritance)和多態(polymorphism)是類的另外兩個重要的特性。繼承最主要的目的是爲了“擴展”原類的功能、加強或改進原類所沒有定義的屬性及方法。被繼承的類爲父類,繼承的類爲子類。採用UML(Unified Modeling Language)的表達方式來設計類,可以畫出類關係圖,其中最重要的部件是類圖標和繼承圖標。多態的概念比較難理解,需要加強理解,其中還有覆蓋(override)的概念。
35、爲了增強程序的可讀性和易用性。全世界的java程序師都遵守以下的規則:(1)Package(包),作爲Package名稱的英文單詞全部要小寫;(2)類,每個英文單詞的第一個字母大寫;(3)接口,規則與類一樣;(4)屬性,每個英文單詞的第一個字母小寫,其他單詞的第一個英文字母大寫;(5)方法,規則和屬性一樣,不過後面有小括號;(7)常量,英文單詞全部大寫,而且每兩個英文單詞之間用下劃線隔開。
36、Animal和Zoo兩個類只需要對Zoo.java進行編譯即可。這是因爲在Zoo.java中所有用到的類如果還沒有進行過編譯的話,在編譯Zoo.java的過程中它們都會被自動編譯。
37、構造函數(constuctor),除了可以在Java編譯時爲我們自動產生之外,還可以自行編寫所需要的構造函數。構造函數也是一個方法。
38、在一個類中,有多個構造函數使用相同的名稱,但是參數類型與個數卻各不相同,我們把這樣的一個行爲稱爲構造函數重載(overloading)。
39、原則上重載有兩個規則一定要遵守:一、方法名稱一定要一樣。否則的話,就是兩個不同的方法,不能稱爲重載。二、調用的參數類型一定要不一樣。因爲編譯器要通過參數類型來判斷調用的是哪一個方法。
40、面向對象程序設計中一個非常重要的概念,我們稱爲信息的隱藏(information hidding),專用的技術術語爲封裝(encapsulatio)。封裝的目的有兩個:一、保護類中的數據,不讓這些數據被錯誤的使用或破壞;二、隱藏不需要讓別人知道的細節,以防別人誤用。封裝還有一些其他的重要的特點:隱藏類的具體細節;強制用戶通過單一接口訪問數據;程序更加容易維護。
41、屬性訪問方法的命名規則:設置屬性值的方法以set作爲開頭;獲取屬性值的方法以get作爲開頭;Boolean數據類型值的獲取用isXXX形式來命名。
42、類的多態的,指類在不同情況下,可以看作是不同的類。
43、類成員和實例成員。前面介紹的屬性和方法,屬於對象等級的,稱爲實例成員。類成員必須使用限定詞static。類成員的調用方法爲<類名稱>.<類成員名稱>,也可以爲<對象名稱>.<類成員名稱>。但是類方法中不能使用實例成員。
44、子類產生對象時,會往上通知它的父類,它的父類又會通知父類的父類,持續這個操作直到最上層的java.lang.Object類。通知上層父類最主要的目的時,對於那些繼承自父類的屬性或其他的設置做初始化的操作。從而達到 程序代碼的重複使用,這也是繼承的目的。Java在編譯時自動幫我們加上通知父類的程序代碼,是加在構造函數裏面。super();這行的意思必須明白。super是關鍵字。
45、調用super函數必須注意兩點:一、super調用必須在構造函數的第1行。二、如果子類中有好幾個不同的構造函數,二父類又沒有不需要參數的構造函數,那麼就必須在子類中的每個構造函數的第一行加上適當的super調用。
46、構造函數調用構造函數用this這個關鍵字。
47、super和this在使用上有一些要注意的地方:一、super和this只能使用在構造函數程序代碼中的第一行;二、super和this同時只能使用一種;三、super和this的調用只能使用在構造函數中;四、如果構造函數中沒有使用super或this,那麼Java會自動幫你加上super()調用。
48、屏蔽(shadow)-屬性(繼承關係)、覆蓋(override)-方法(繼承關係)、重載(overload)-方法(同一個類下函數同名,但參數不同)。使用屬性的幾種方法必須瞭解,super、this、強制類型轉換的使用。

第8章 深入Java面向對象程序設計
49、什麼是包(package)?包很像我們計算機中的目錄或是文件夾。目錄分隔符,dos用/,unix用/。目錄機制應用於Java面向對象的程序當中就是所謂的包。
50、package語句中,原本的目錄分隔符改用句點[.]來代替。package <package名稱>;必須注意:package語句一定只能寫在程序代碼的第一行。package的UML圖示。除了每一個類的Java文件中的第一行設置package外,程序代碼中用到其他類的地方也一併加上它的package的名稱。package的設置與使用。
51、import語句,必須寫在package語句之後,所有類聲明之前。import語句的通配符(*)。使用通配符只是將該package下的類import進來,不會把子目錄下的其他目錄中的類import進來。
52、classpath的設置。classpath是Java程序在編譯與運行時會使用到的一個【環境變量】,它的主要用途是告訴編譯器去哪裏找到編譯或運行時所需要的類。windows默認情況下classpath爲【.】。設置classpath的兩種方法:一、直接設置;二、javac加上-classpath這個參數。
53、訪問權限的限定詞的使用。protected與default的使用。成員限定詞有四個,而類聲明限定詞只有兩個。
54、final限定詞的使用-用於常量。final和static的使用。
55、抽象類的使用。關鍵字是abstract。能讓繼承的子類一定覆蓋某個特殊的方法,這種機制就是【抽象(abstract)】。在一個類中,我們可以指定某個方法爲抽象的,而一個抽象的方法不需要編寫方法的內容,也就是說當方法聲明完後,就直接以分號【;】來結束,不用加上左右大括號。只要有任何一個抽象方法,那麼這個類就必須成爲一個抽象類,所以我們必須把類的聲明加上abstract這個關鍵字。抽象類不能生成對象實例。abstract只能用在類和方法上。屬性和變量上沒有意義。
56、接口-一種標準、一些規範。在java中,接口是由一些常量和抽象方法所組成的。關鍵字是【interface】,使用的格式如下:<限定詞>interface<接口名稱>[extends<接口名稱>s]。解決abstract不能解決的問題。接口中方法的語法聲明跟抽象方法的語法聲明是一樣的,就是是隻有方法的聲明,而沒有方法本身,簡單的說就是聲明完後直接以分號結束整個語句,而不用再加上大括號。接口中的方法也都全部是抽象方法,只是不需要額外加上abstract這個關鍵字。extends <類名>,implements <接口名>。簡單的說,接口就是一個完全抽象的類。Java用多重接口的方法來完成類的多重繼承機制。implements<接口1>,<接口2>……。java中存在一種特殊的接口,它只有接口的聲明,而內部是空的,也就是說完全沒有任何的常量和方法的聲明。這種特殊大額接口稱爲【標記接口(marker interface)】。

第9章 Object類的常用方法介紹
57、對象之間的比較,第一種觀點,對象相等是指對象爲同一個。包括使用的內存。直接用==。第二種觀點,是兩個對象的內容是否相等。用equals方法。
58、理解hash code的含義。
59、引用(reference)與複製(clone)的區別。clone方法的使用。
60、將對象轉爲字符的方法【toString】。
61、在設計的類的時候,最好也一併的把這幾個Object的方法覆蓋。

第10章 深入內存
62、變量內存的使用,變量聲明後,編譯器就分配了內存。
63、對象內存的使用,對象聲明後,編譯器只是在內存中產生一個對象的引用(reference),它所存放的並不是一個真正的對象實例 ,因爲對象的實例我們還沒生成。所以當一個對象被聲明後,在內存中這個對象引用的初始值會是【null】。我們用new這個關鍵字,配合調用類的構造函數,來生成對象實例。但,此時對象引用與對象實例並沒有產生關聯。需要使用複製語句使它們關聯。每個對象引用佔用4個字節的內存空間。對象的引用所存放的是撒對象實例真正在內存中的地址。對象引用實際佔用的內存大小,跟系統(JVM)實現的方法有關,不同的系統大小不一定相同。
64、什麼是數組,數組是存放量大、性質相同且需要做相同處理的數據。數組可以用在基本數據類型的變量上,當然也可以用在對象上。數組與對象有點相似,分成兩個階段——數組引用的聲明和數組實例的生成。數組聲明格式如下:int a[];和int []a;數組聲明完後,在內存中表現的方法也跟對象一樣,也是個引用,而且初始值也是null。生成數組實例同樣要用到new關鍵字,在這之後要用賦值語句進行關聯處理。也可以同時創建和初始化數組,如 int a[]={1,2,3,4}。
65、數組的索引(index),是[]裏面的數字,它表示這個數組中的第幾筆數據。數組的使用比較簡單,就是在數組變量的名稱後,加上要訪問的索引。索引從0開始到數組的大小減1。
66、數組的length屬性獲得數組的大小。必須注意數組的大小是不能改變的。使用上比較有彈性。
67、數組的複製。數組不是繼承自java.lang.Object類的對象,所以沒有clone這個用來複制對象實例的方法。可以利用循環賦值來實現。java中提供了【System.arraycopy】方法。使用這個方法時需要5個參數,依次是源數組、來源數組數據起始位置、目的數組、目的數組數據起始位置、複製數據的個數。使用上比較有彈性。arraycopy方法只適用於基本數據類型的數組。相比而言,第二種方法使用JNI的方法,所以速度上會比較快。arraycopy的三種異常,NULLPointerException,ArrayIndexOutOfBoudsException,ArrayStroeException。
68、Java 本機接口(Java Native Interface (JNI))是一個本機編程接口,它是 Java 軟件開發工具箱(Java Software Development Kit (SDK))的一部分。JNI 允許 Java 代碼使用以其它語言(譬如 C 和 C++)編寫的代碼和代碼庫。Invocation API(JNI 的一部分)可以用來將 Java 虛擬機(JVM)嵌入到本機應用程序中,從而允許程序員從本機代碼內部調用 Java 代碼。
預備知識
所有示例都是使用 Java、C 和 C++ 代碼編寫的,並可以移植到 Windows 和基於 UNIX 的平臺上。要完全理解這些示例,您必須有一些 Java 語言編程經驗。此外,您還需要一些 C 或 C++ 編程經驗。嚴格來說,JNI 解決方案可以分成 Java 編程任務和 C/C++ 編程任務,由不同的程序員完成每項任務。然而,要完全理解 JNI 是如何在兩種編程環境中工作的,您必須能夠理解 Java 和 C/C++ 代碼。
系統需求
瀏覽器:Netscape 4.x 或更高版本, 或者 Internet Explorer 4.x 或更高版本 ,支持 JavaScript 。 要運行本教程中的示例,您需要下列工具與組件: Java 編譯器:隨 SDK 一起提供的 javac.exe。 Java 虛擬機(JVM):隨 SDK 一起提供的 java.exe。 本機方法 C 文件生成器:隨 SDK 一起提供的 javah.exe。 定義 JNI 的庫文件和本機頭文件。jni.h C 頭文件、jvm.lib 和 jvm.dll 或 jvm.so 文件,這些文件都是隨 SDK 一起提供的。 能夠創建共享庫的 C 和 C++ 編譯器。最常見的兩個 C 編譯器是用於 Windows 的 Visual C++ 和用於基於 UNIX 系統的 cc。
68、多維數組在內存中的樣子。必須理解。不規則數組的生成。 不規則數組是Java語言的一個重要特點,其他的程序語言像C或是Basic,都只能聲明規則的多維數組,而且維數有上限。java沒有這個限制。
69、以上討論基本數據類型的數組,現在來看對象數組。防止NullPointerException異常的產生。
70、變量的訪問範圍【scope】,有點像類之間屬性及方法訪問的限制,這些限制是由於訪問權限的限定詞、package和繼承這幾種關係組合起來的。變量訪問範圍大致分爲四個等級:第一、類級(static);第二、對象實例級;第三、方法級;第四、局域級。怎麼樣區分這幾個級別,必須注意。必須理解這四個等級。訪問範圍和視野的關係剛好相反。內存存在的時間。
71、參數的傳遞。以前的程序語言概念參數的傳遞有兩種方法,一是【傳值(call by value)】,另一個是【傳址(call by reference)】。但java裏面只有傳值這種方式。基本數據類型參數值傳遞與類對象型參數值傳遞是不同的。
72、內存回收(garbage collection)。負責運行這個機制的就是【garbage collector】。對象聲明包括兩部分:對象引用和對象實例。如果一個對象實例不被任何對象引用指到的話,但啓動GC時,就會把對象實例回收回去,並把內存釋放調。取消對象引用,只要將它指定爲【null】即可。GC是不定時的啓動,也可以手動調用它,方法是【System.gc()】,它會調用【Runtime.getRuntime.gc()】,這兩個方法都可以使用。finalize方法同樣也是Object類常用的一個方法,與GC有關。它是在對象被回收前,GC所調用的方法。回收順序與對象實例的生成順序有關。既是我們手動調用System.gc(),GC也不見得一定運行,GC正確的啓動時間無法得知。                                                                                                                               
第11章 Application與Applet
73、Application的輸出,System類的out屬性是PrintStream對象,有prinlin方法和print方法,也可以用err屬性是PrintStream對象,有prinlin方法和print方法,但有區別,out屬性可以重定向(redirected),err屬性只能輸出到默認的設備上。Application默認的就是所打開的命令行窗口,Applet默認的就是Java Console。 可以用>來實現重定向。println和print方法都是屬於重載的方法,除了可以接受八種基本數據類型和String類型作爲參數外,還可以接受一般的對象作爲參數,編譯器會自動調用這個對象的【toString】方法,char數組也可以作爲這兩個方法的參數。
74、Application的輸入,分爲兩種,一是參數輸入(命令行參數),Wrapper類的使用。基本數據類型與Wrapper類的對應關係。Wrapper類種有相應的parseXXX方法來實現字符串轉換爲基本數據類型。二是標準輸入,System類的in屬性是InputStream對象,有read方法來讀取輸入,讀進來是byte對類型,需要轉化爲其他類數據型。通常使用InputStreamReader類,然後連接到BufferedReader類,用BufferedReader類提供的讀取字符串的方法【readLine】。
75、系統參數的獲取用【System.getProperties】方法。必須注意系統參數與命令行參數的區別。
76、System類的使用。setXXX(setOut、setErr、setIn),setProperties和SetProperty的區別。System.exit(n),虛擬機會調用Runtime.getRutime.exit(n)方法。currentTimeMills。
77、Runtime類的使用。可以通過exec這個方法來運行一個外部程序。
78、Appplication必須有一個main的方法,符合四個條件。而一個Applet一定要繼承java.applet.Applet類。main方法是Application運行的起始點,而Applet運行的起始點在init方法上。Applet中,System.out或System.err方法來輸出,但System.in方法不能用。Applet有自己的輸入方式,類似於命令行參數的方式。在HTML文件中,加上參數語法,<param name=<參數名稱> value=<參數值>>。然後在java程序中,應用java.applet.Applet類的【getParam】方法。
79、Applet基本方法的使用。init、start、stop、destroy、paint。destroy和finalize方法的區別在於使用地點不同。paint方法的使用。paint方法中有個屬性是Graphics對象,注意Graphics類的【drawString】方法的使用。
80、java的安全性,是指Applet滿足java指定的重重安全規範。四點限制措施。
81、Application和Applet的結合。Java Web Start是取代Applet的機制。

第12章 異常處理
82、異常是指程序在運行的過程中,由於編寫程序的倏忽,外在環境的因素,或是電腦系統本身的問題,都可能導致程序運行時產生錯誤,造成死機或是計算的結果不正確,這些突發的狀況稱爲異常。 異常處理是指當程序出現異常時,能夠作出一些應變的處理。
83、java.lang.Throwable類。Exception類(可以控制)和Error類(無法控制)。
84、RuntimeException常見的有以下幾種:ArithmeticException、ArrayIndexOutOfBoundsException、ArrayStoreException、ClassCastException、IllegalArgumentException、NativeArraySizeException、NullPointerException、SecurityException。由於自己編程引起的。
85、CheckedException常見的有以下幾種:ClassNotFoundExecption、FileNotFoundException、InterrupedException、IOException、SQLException。一些外部因素引起的。
86、Error有OutOfMemoryError、StackOverflowError、UnknowError、AWTError、ThreadDeath。系統級且非常嚴重的錯誤。錯誤原因是內存不足或者是運行時掛起。
87、捕捉和處理異常。主要是針對CheckedException類的異常。try、catch、finally三個關鍵字的使用。處理異常包括以下兩個步驟:一、把異常的名稱及一些相關的信息顯示出來,二、用最安全的方法恢復程序的運行。顯示異常信息用到,toString、getLocalizedMessage、getMessage、printStackTrace方法。其中printStackTrace方法有三種不同的重載。彈性(flexibility)。 finally關鍵字的使用注意以下三點:一、沒有異常產生-》進finally區塊-》方法中剩下未運行的程序代碼。二、有異常產生-》捕捉到-》進catch區塊-》finally區塊-》方法中剩下未運行的程序代碼;三、有異常產生-》沒有捕捉到-》進finally區塊-》方法中剩下未運行的程序代碼。                   
88、注意異常捕捉的順序。越上層的類,越放在下面。
89、throws關鍵字的使用,在方法聲明上拋出異常。throw關鍵字,在方法內部拋出異常。必須注意拋出RuntimeException和CheckedException兩種異常在使用上的差別。
90、定義自己的Exception。
91、拋出異常方法覆蓋的問題。注意兩點:一、不可拋出原有方法拋出異常類的父類或上層類;二、拋出的異常類數目不能筆原有的方法拋出的還多。主要是因爲編譯時拋出的異常類無法自動轉化爲父類中所聲明的異常類。

第13章 容器(Container)與佈局(Layout)
92、什麼是AWT(Abstract Windowing Toolkit),什麼是GUI(Graphical User Interface)圖形用戶接口。AWT包的結構圖。
93、Container包括Frame和Panel。Frame是先構造,然後setSize,然後再setVisible。理解Deprecation。Frame的常用方法。記住【Ctrl】+【C】來停止程序的方法。Panel不能獨立出現在畫面上,必須放在某個Container中才行,例如Frame或瀏覽器裏面。Applet本身就是一個panel。add方法的使用。
94、什麼是Layout。【setLayout(<xxxLayout>)】方法。有五個基本的Layout類。Frame默認的佈局是BorderLayout類。Panel默認的佈局是FlowLayout。另外還有CardLayout、GridLayout、GridBagLayout。也可以設計自己的Layout類。
95、pack和setSize方法的區別。                                                     
96、如果不使用Layout,可以使用【setSize】和【setLocation】方法來代替。最好使用Layout類。                                                                                      
第14章 事件處理
97、什麼是事件【event】。事件就是別人給予它的一些操作。明白事件處理結構:事件本身、事件產生的來源、誰來處理事件。
98、什麼是委託處理模式【Delegation Model】。事件處理的機制。
99、AWT Event類的結構圖。分爲兩類:Low-level和senmantic。
100、【Listener】這個接口(interface)與【Adapter】類的相對應。
101、一個對象可以委託好幾個類來處理相同的事件,一個處理事件的類也可以同時處理不同對象所產生的事件。這種情況稱爲【multiplexer】。
102、WindowEvent、MouseEvent、KeyEvent類事件處理的接口,類和方法。以及其他常用的Low-level Event類,分別是ContainterEvent和FocusEvent。                           
103、Swing是Java所設計的另外一組更豐富、功能更多的GUI空間。理解Swing和AWT的區別。

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