20145218 《Java程序設計》第三周學習總結
教材學習內容總結
定義類
編寫程序要產生對象就要先定義類。類是對象的設計圖,對象是類的實例。類定義時使用class關鍵詞,建立實例時,要使用new關鍵詞。
代碼如下:
運行結果如下:
在Field.java中,存在公開的Field類(即存在public class Field語句),所以文檔名稱必須是Field,而當我保存文件起名為Clothes時,編譯就會出現錯誤。
使用標准類
- 兩個標准類:java.util.Scanner和java.math.BigDecimal
- java.util.Scanner
之前編寫的程序都是直接輸出結果,沒辦法接受輸入,C語言中只要有scanf便可接受用戶輸入,在java中,當通過new Scanner(System.in)創建一個Scanner,控制台會一直等待輸入,直到敲回車鍵結束,把所輸入的內容傳給Scanner,作為掃描對象。先編寫一個簡單地判斷奇偶數的程序。
代碼如下:
運行結果如下:
- java.math.BigDecimal
0.1+0.1+0.1在Java的運算中並不等於0.3
代碼如下:
運行結果如下:
這是因為Java遵守IEEE754浮點數運算,簡而言之,在Java中編寫程序進行浮點數運算多多少少會產生誤差。而使用java.math.BigDecimal則可以產生更好的精度。
代碼如下:
運行結果如下:
數組的基本學習
- 數組打印:數組就像是一個有很多小隔間的容器,每個小隔間可以放入一個元素,例如在數組中存入六個數字,並打印出來
代碼如下:
運行結果如下:
- 數組排序:數組的常見使用方法就是獲取最值和排序,其實二者差別不是很大,都是對數組內每一個小隔間的元素進行判斷及重排序。排序要比獲取最值復雜一點,排序的代碼如下
代碼如下:
運行結果如下:
圖中排序方法為冒泡排序法。
操作數組對象
如果事先不知道數組中的元素值,只知道元素個數,則可以通過new關鍵詞指定長度來建立數組(例如:int[] scores=new int[10];)。此時數組初始值均為0,若要改變初始值,則可使用java.util.Arrays的fill()方法來設定新建數組的元素值。
代碼如下:
運行結果如下:
數組復制
數組復制的基本做法是另行建立新數組。但可以使用arrays.copyOf()方法。System.arraycopy()的五個參數分別是來源數組、來源起始索引、目的數組、目的起始索引、復制長度。
代碼如下:
運行結果如下:
字符串對象
字符串是由字符組成的文字符號。在java中,字符串是java.lang.String實例,用來打包字符數組。例如:
String name="justin"; //建立String實例
System.out.println(name); //顯示justin
System.out.println(name.length()); //顯示長度為6
System.out.println(name.charAt(0)); //顯示第一個字符j
System.out.println(name.toUpperCase()); //顯示JUSTIN
- 練習讓用戶輸入整數,輸入0后計算所有整數總和
代碼如下:
運行結果如下:
封裝
- 封裝可以理解為把方法封在類中,用打時候可以直接拿,就好比你要上學,類就是書包而方法就是書,要用方法打時候直接從書包中拿書就行。
代碼如下:
類語法細節
- public權限修飾
public是個公開類,可以在其他包的類中使用。可以在構造函數上聲明public,這表示其他包中的類可以直接調用這個構造函數。可以在方法上聲明public,這表示其他包中的方法可以直接調用這個方法。 - 關於構造函數
函數名與類名相同,不用定義返回值類型,不可以寫return語句。 - 重載
(1)重載的概念:在同一個類中,允許存在一個以上的同名函數,只要他們的參數個數或者參數類型不同即可。
(2)重載的特點:與返回值類型無關,只看參數列表。
(3)重載的好處:方便於閱讀,優化了程序設計。
方法重載代碼如下:
運行結果如下:
若想讓上面的程序結果顯示為“Integer被調用”則代碼修改如下:
運行結果如下:
使用this
除了被聲明為static的地方外,this關鍵字可以出現在類中任何地方。在構建函數參數與對象數據成員同名時,可用this加以區別。
代碼如下:
運行結果如下:
static類成員
- 被聲明為static的成員,不會讓個別對象擁有,而是屬於類,是將類名稱作為名稱空間。
- 由於static成員是屬於類,而非個別對象,所以在static成員中使用this,會是一種語意上的錯誤。
- 靜態變量必須在初始化之前進行賦值,否則會報錯。靜態方法通常都是被經常使用的方法,不需要每次都重新實例化,提高工作效率。
import static語法代碼如下:
運行結果如下:
不定長度自變量
- 要使用不定長度自變量,聲明參數列時要在類型關鍵字后加上...。
內部類
-
可以在類中再定義類。
-
內部類也可以使用public、protected或private聲明。例如:
class Some{
private class Other{}
}
代碼托管
代碼托管可以更直觀的反應我們所寫的代碼。
代碼調試中的問題和解決過程
課本上的代碼敲上去之后卻運行不了,出現了上圖中的錯誤。
感悟
與前兩周輕松的學習不同,第三周的任務量與難度同時加大了,出現了很多以前從未接觸過的名詞及定義。但通過對第四章第五章的學習,我對java的認識更深了一層,原來沒有自己想象中的那么簡單,有的代碼明明和書上的一模一樣,到了自己的電腦上卻無法運行,而且出現了問題也不知道怎么去解決,希望通過以后的學習可以慢慢提高自己的水平,遇到問題不再慌張,也試着自己去解決。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 18/40 | |
第三周 | 400/1000 | 1/4 | 25/60 |