20145302張薇《Java程序設計》第三周學習總結


20145302張薇《Java程序設計》第三周學習總結

教材學習內容總結

  • 第四章
  • 定義類 一個原始碼中有多少類就會有多少.class文檔。
  • 標准類
  1. 使用java.util.scanner讓用戶輸入數據,在開頭使用import偷懶吧
變量名=scanner.nextxxx();
  1. 使用java.math.BigDecimal提高浮點數計算的精確度,在開頭用import偷懶,BigDecimal提供加減乘除等計算方法,而且可以疊加使用
op1.add(op2).subtract(op3).multioly(op4).divide(OP5).equals(result)
  • 對象指定與相等性
  1. 對於==來說,是在比較兩個名牌是否綁到同一對象。
  2. 對於a.equals(b)來說,是在比較a、b兩個名牌的內容值是否相等。
  • 基本類型打包器
  1. Integer提供a.compareTo(b)方法,a=b時返回0,a<b時返回-1,a>b時返回1。
  2. 最好不要用==來比較兩個實例的內容值。
  • 數組對象
  1. 數組索引從0開始,存取超過了索引范圍,就會出現ArrayIndexOutOfBoundsException錯誤。
  2. 使用new建立數組后,每個元素都有默認值,教材P98。
  3. 數組一旦建立,長度就固定了。
  4. 無論是System.arraycopy()還是Arrays.copyOf(),用在類類型聲明的數組時,都是執行淺層復制。
  • 字符串對象
  1. 字符串的本質是打包字符數組的對象,是java.lang.String類的實例。
  2. 以“”包括的字符串,只要內容相同(序列、大小寫均要相同),無論在程序代碼中出現幾次,JVM只會建立一個String實例,並在字符串池中維護。
  3. 與對象指定相通,比較兩個字符串的內容要用equals().
  4. 字符串對象一旦建立,就無法更改對象中的任何內容。
  5. 使用+連接字符會產生新的String實例,不能把+用在重復性的連接場合。
  • 查詢Java API文件隨着不斷深入的學習,我們對API的認識會更加深刻。
  • 第五章
  • 何謂封裝
  1. 封裝的目的主要就是隱藏對象細節,將對象當作黑箱進行操作。
  2. 在java命名規范中,取值方法的名稱形式是固定的,也就是以get開頭,之后接上首寫字母大寫的單詞。
  3. 創建對象時,數據成員會初始化,如果沒有指定初始值,則會使用默認值初始化。
  • 類語法細節
  1. 如果定義類時,沒有撰寫任何構造函數,編譯程序會自動加入一個無參數、內容為空的構造函數,稱為默認構造函數。
  2. 可以定義多個構造函數,只要參數類型或個數不同,這稱為重載構造函數。
  3. public用在類前,表示的這個類是公開類,這樣就可以在其他包的類中使用;用在方法前,這樣就表示其它包中的方法可以直接調用這個方法;用在函數前,這表示其它包中的類可以直接調用這個構造函數;用在成員變量前,表示這個成員變量是公開的,這樣別人可以直接調取你類中的變量。
  4. this除了被聲明為static的地方外,this關鍵字可以出現在類中的任何地方,在對象建立后為“這個對象”的參考名稱。
  5. static用於修飾成員變量和成員函數,被聲明為static的成員,不會讓個別對象擁有,而是屬於類。
  6. 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 了解對象

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM