20145302張薇《Java程序設計》第三周學習總結
教材學習內容總結
- 第四章
- 定義類 一個原始碼中有多少類就會有多少
.class文檔。
- 標准類
- 使用
java.util.scanner讓用戶輸入數據,在開頭使用import偷懶吧
變量名=scanner.nextxxx();
- 使用
java.math.BigDecimal提高浮點數計算的精確度,在開頭用import偷懶,BigDecimal提供加減乘除等計算方法,而且可以疊加使用
op1.add(op2).subtract(op3).multioly(op4).divide(OP5).equals(result)
- 對於
==來說,是在比較兩個名牌是否綁到同一對象。
- 對於
a.equals(b)來說,是在比較a、b兩個名牌的內容值是否相等。
Integer提供a.compareTo(b)方法,a=b時返回0,a<b時返回-1,a>b時返回1。
- 最好不要用==來比較兩個實例的內容值。
- 數組索引從0開始,存取超過了索引范圍,就會出現ArrayIndexOutOfBoundsException錯誤。
- 使用new建立數組后,每個元素都有默認值,教材P98。
- 數組一旦建立,長度就固定了。
- 無論是
System.arraycopy()還是Arrays.copyOf(),用在類類型聲明的數組時,都是執行淺層復制。
- 字符串的本質是打包字符數組的對象,是
java.lang.String類的實例。
- 以“”包括的字符串,只要內容相同(序列、大小寫均要相同),無論在程序代碼中出現幾次,JVM只會建立一個String實例,並在字符串池中維護。
- 與對象指定相通,比較兩個字符串的內容要用
equals().
- 字符串對象一旦建立,就無法更改對象中的任何內容。
- 使用+連接字符會產生新的String實例,不能把+用在重復性的連接場合。
- 查詢Java API文件隨着不斷深入的學習,我們對API的認識會更加深刻。
- 第五章
- 何謂封裝
- 封裝的目的主要就是隱藏對象細節,將對象當作黑箱進行操作。
- 在java命名規范中,取值方法的名稱形式是固定的,也就是以get開頭,之后接上首寫字母大寫的單詞。
- 創建對象時,數據成員會初始化,如果沒有指定初始值,則會使用默認值初始化。
- 如果定義類時,沒有撰寫任何構造函數,編譯程序會自動加入一個無參數、內容為空的構造函數,稱為默認構造函數。
- 可以定義多個構造函數,只要參數類型或個數不同,這稱為重載構造函數。
public用在類前,表示的這個類是公開類,這樣就可以在其他包的類中使用;用在方法前,這樣就表示其它包中的方法可以直接調用這個方法;用在函數前,這表示其它包中的類可以直接調用這個構造函數;用在成員變量前,表示這個成員變量是公開的,這樣別人可以直接調取你類中的變量。
this除了被聲明為static的地方外,this關鍵字可以出現在類中的任何地方,在對象建立后為“這個對象”的參考名稱。
static用於修飾成員變量和成員函數,被聲明為static的成員,不會讓個別對象擁有,而是屬於類。
import static語法是為了偷懶,但是要注意名稱沖突問題,有些名稱沖突編譯程序會通過以下程序來解析:
- 局部變量覆蓋:選用方法中的同名變量、參數、方法名稱。
- 成員覆蓋:選用類中定義的同名數據成員、方法名稱。
- 重載方法比較:使用import static的各個靜態成員,若有同名沖突,嘗試通過重載判斷。
教材學習中的問題和解決過程
- 問題1教材P88說明BigDecimal提供加減乘除的運算,其中“加”為
plus(),而下面的程序利用的是add(),這二者一樣嗎?
- 解決過程1 百度上沒有相關問題,尚未解決。
- 問題2教材P92關於裝、拆箱問題不明白,下例顯示結果為20與10,為何不是20與21?
Integer i=10;
System.out.println(i+10);
System.out.println(i++);
- 解決過程2我想到了第三章的第八題,困惑為何第八題i的值是疊加進行的,到這里就不一樣了,也許因為這里是輸出的原因,然后意識到
i++是一個整體,輸出i++意味着:輸出=i,i=i+1;,所以輸出為20和10。
- 問題3教材P119第一題我以為顯示結果應該是false、false,不明白為何是ture、ture。
- 解決過程3又對比了一下書本前方的內容,發現在對象指定與相關性那部分的內容中,程序利用new關鍵詞建立了新的對象,所以二者不相等,而本題不是。
- 問題4教材P93關於編譯程序蜜糖的內部為何那么展開很不明白。
- 解決過程4詢問了周圍的同學,大家都不清楚,尚未解決。
代碼調試中的問題和解決過程
import java.util.Scanner;
public class Fibonacci{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int f1=0;
int f2=1;
int f_n;
int n;
System.out.printf("求幾個費式數?%n");
n=scanner.nextInt();
for(int i=0;i<n;i++){
System.out.println(f1);
f_n=f1+f2;
f1=f2;
f2=f_n;
}
}
}

代碼托管

其他(感悟、思考等,可選)
- 這兩章的專業術語太多了,文字描述的很晦澀,工作量很大,代碼很多,需要注意的細節也很多,很繁瑣。
- 看了這兩章才發現,java和C語言真的是兩種語言……二者其實是有很多不同的,java都是面向對象的,如果總用C的思維來看代碼、編代碼,那么就很難看懂程序、編寫出正確的程序了。
- 還是要多練習,IDEA有很多選項並不知道如何使用,並沒有充分的利用編寫軟件的優勢,應該不斷探索。
學習進度條
|
代碼行數(新增/累積) |
博客量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
| 目標 |
1500行 |
15篇 |
400小時 |
|
| 第一周 |
10/10 |
2/2 |
10/10 |
基礎知識 |
| 第二周 |
100/100 |
3/3 |
35/35 |
語法知識 |
| 第三周 |
300/300 |
4/4 |
60/60 |
了解對象 |
參考資料