1. 程式人生 > >Android學習總結————Java程式設計技巧與開發例項(朱福喜)

Android學習總結————Java程式設計技巧與開發例項(朱福喜)

第一部分   記於2013年7月21

1.安卓開發環境的安裝
(1)設定相關環境變數
a.JAVA_HOME       
D:\Java\jdk1.6.0_29
b.PATH          %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;D:\Android\android-sdk-windows\tools;D:\Android\android-sdk-windows\platform-tools
c.CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;




(2)Eclipse 軟體與  Android SDK的繫結



2.呼叫cmd 命令列呼叫java
輸入:F:      即可進入F盤路徑
輸入:cd F:\電子實驗室\project\例1.6\src       
即可進入F:\電子實驗室\project\例1.6\src
(1)先呼叫 javac *.java 檔案,沒有任何資訊顯示,代表程式能正常執行
在該目錄下生成*.class檔案
(2)再呼叫 java *(直接使用檔名即可)
3. Java 程式設計基本常識
(1)Java 語言區分大小寫
(2)自增運算子++,自減運算子--
a.做變數的字首時,首先變數進行+1或-1運算,然後所得的值在表示式中參與運算
b.做變數的字尾時,變數先參與表示式中的運算,再進行+1或-1運算
c.不管是字首還是字尾都會對變數自身產生效果

(3)巢狀的if-else-if:仔細分析,避免條件的冗餘
(4)switch 語句只能處理 int 和 char 型別的表示式
(5)switch語句與巢狀的 if-else-if 可以相互轉換
(6)for 迴圈 :首先對用於邏輯判斷的變數進行初始化,然後進行邏輯判斷,若判斷結果為真,則執行 for 所包含的程式碼段,再修改變數,最後又回到邏輯判斷。
(7)while 迴圈
(8)do-while 迴圈:在每次執行一次 do 所包含的程式碼段後,邏輯判斷一次。故迴圈體至少被執行一次。
(9)break 與 continue 的區別
(10) name1 == name2
 name1,name2為String型別,不是Java提供的基本資料型別,這時==判斷字串的儲存位置是否相同
(11)控制符\t 可以對齊輸出格式
(12)System.out.flush();//每次輸入完檔案之後呼叫一次,防止緩衝區的資料並未讀

4.求小於給定數的質數個數
(1) 一個正數如果只能被1和它自己整除,那麼該數就是質數
(2) 如果一個數n能被primeCandidate,那麼必定存在整數m,使得 n*m = primeCandidate,並且m、n 不會都大於 primeCandidate的算術平方根,因此選擇除數時可以選擇小於或等於 primeCandidate的算術平方根 的正整數。
(3)如果一個數不能被2整除,則它不能被所有的偶數整除,因此我們只需要用2和其他的奇數來整除該數,從而降低運算量,提高程式的運算效率


                                                                         分割線

第二部分——記於7月28日

一、成員變數與區域性變數

1.一個變數在類中但又不是在方法中被定義,那麼這種變數是成員變數。用關鍵字static修飾的話,那麼該類的所有方法都可以直接訪問成員變數。

2.定義在方法內的變數叫區域性變數。

3.在所有用static定義的方法中也要用關鍵字static定義成員變數。

二、變數的生命週期:變數在什麼地方是有效的。

1.區域性變數如果定義在迴圈體內部,它只在迴圈體內部有效,在迴圈體外部就不能訪問。

三、利用陣列計算複利(程式設計例項)

(1)計算每年的利息

(2)將每年的利息加入該年的結餘

(3)計算平均利息

(4)顯示結果


四、1.import java.text.DecimalFormat;呼叫庫函式,十進位制格式化工具

DecimalFormat formatTool = new DecimalFormat("#,###.0");

System.out.print("\tInt: " + formatTool.format(interest[i]));

System.out.print("\tAmt: " + formatTool.format(amount[i]));

System.out.println("\tAvg.Int: " + formatTool.format(avg[i]));

2.args 可以不是固定的 只是個區域性變數名而已

五、面向物件程式設計的目標:建立抽象的、可以執行的軟體物件,這些軟體物件就像現實世界的物件一樣能夠使用和操作。

(1)類:基本結構,包含資料域和操作這些資料的機制。

(2)例項:例項是以類為模板建立的物件

(3)封裝性:允許或禁止訪問類或物件的資料和成員方法的能力

(4)過載性:允許一個成員方法有多重定義

(5)繼承性

(6)多型性

六、構造方法:是類的一種特殊方法,構造方法名與類名相同。它在類例項化物件時被執行,並且沒有返回值

七、析構方法:當Java的垃圾回收機制將要釋放無用資源的時候,會自動呼叫析構方法,該方法稱為finalize。其語法如下:

protected void finalize()

{/*具體實現*/}

八、封裝

public: 公有成員變數、成員方法、類可以被任何類訪問

protected:保護成員變數、成員方法只能被類本身、子類和同一包、目錄下的所有類訪問

private:私有成員變數和成員方法只能被類本身訪問

無限定詞:沒有限定詞的成員變數、成員方法或類的型別成為友員型別,它能被類本身以及同一包或目錄下的所有類訪問

                                                                         分割線

第三部分——記於2013年8月04日

1.void java.lang.System.gc()
學會使用jdk文件,檢視庫函式
執行垃圾回收器。呼叫此方法意味著 Java 虛擬機器做了一些努力來回收未用物件,以便能夠快速地重用這些物件當前佔用的記憶體。當控制從方法呼叫中返回時,虛擬機器已經盡最大努力回收了所有丟棄的物件。
名稱 gc 代表“垃圾回收器”。虛擬機器根據需要在單獨的執行緒中自動執行回收過程,甚至不用顯式呼叫 gc 方法。
2.隱含地呼叫超類的構造方法
 (1) 當子類被呼叫的時候,隱含地呼叫超類的構造方法,此時沒有為構造方法輸入任何引數,除非在子類的第一行明確地呼叫超類的構造方法。如果超類沒有無引數的構造方法,子類又不明確地呼叫超類的構造方法,編譯器將無法編譯子類。
 (2)避免隱藏地呼叫超類的構造方法
a.每個子類都應當明確地呼叫超類的一個構造方法,而且必須在第1行呼叫。
b.為每個可能成為超類的類提供一個無引數的構造方法,如果還有其他需要,則過載構造方法
(3)析構方法也應該注意類似的情況
3.成員方法和成員變數的覆蓋
 如果在子類中重新定義了一個與它的超類完全相同的一個方法(成員變數),子類的將覆蓋對應超類中同名的。此時超類中該方法(成員變數)仍可在子類中使用,但要加上關鍵字super和原點操作符。
4.抽象方法和抽象類:
(1)抽象方法只有方法的宣告,但沒有方法體。可以使用限定詞abstract定義一個方法為抽象型別。擁有抽象方法的類是一個抽象類,它也同樣需要限定詞abstract來宣告。
(2)一個從抽象類擴充套件而來的類,如果它沒有把抽象方法具體化,則它也是一個抽象類。抽象類不能例項化。
(3)在抽象類中宣告抽象方法可以迫使子類實現繼承而來的抽象方法。
5.最終方法和最終類:最終方法是在派生類中不能被覆蓋的方法,最終類是不能被擴充套件的類。一個類可以含有最終方法用final宣告。
6.Java的基類Object
(1)每個類繼承object類的方法
(2)每個類既屬於它所定義的型別,又屬於Object型別
方法能使用超類的例項,就能呼叫其子類的例項嘛????
7.如何定義一個數組儲存各種型別的元素?
答:每個Java類都是由Object擴充套件而來,因此,所有的類都屬於Object型別,故可以通過建立一個Object型別的陣列來儲存任何型別的物件。 由此可以看出,要在一個數組中儲存相關物件,建立一個類作為這些物件的父類,並且定義該陣列為父類型別的陣列即可。
(每個元素都可在陣列中檢索到,在instanceof的幫助下能確定其原來的型別)
8.多級繼承與多重繼承
多級繼承:一個超類的子類被另一個類繼承。Java支援多級繼承。當最低級別的類例項化,每個超類依次被呼叫,從最高階開始。
多重繼承:一個類同時繼承多個超類。Java不支援多重繼承。
9.介面:
介面是由一些抽象方法和常量所組成的一個集合。介面中的方法都預設為abstract,常量都預設為final。
一個類可通過關鍵字implements來繼承一個或多個介面
10.成員方法的呼叫
(1)例項化物件.成員方法
(2)new 類名().成員方法
靜態成員方法(用static 修飾):還可以通過 類名.成員方法,類不需要例項化