20145320《Java程式設計》第3周學習總結

20145320周岐浩發表於2016-03-19

20145320《Java程式設計》第3周學習總結(第四章)

教材學習內容總結

物件(Object):存在的具體實體,具有明確的狀態和行為

類(Class):具有相同屬性和行為的一組物件的集合,用於組合各個物件所共有操作和屬性的一種機制

從類看物件:類定義可以視為一個具有類似特性與共同行為的物件的模板,可用來產生物件

從物件看類:類的產生,是從少數例項,推廣到大量相似例項的抽象化過程(abstraction)

類是物件的設計圖,物件是類的例項,生成物件要先定義類

4.1 類與物件

定義類使用class

定義後建立例項,如: Clothes c1=new Clothes()在堆上生成物件, c1 可以近似看成指向物件的指標, 在《資料結構》中實現連結串列,C語言使用指標,Java使用引用。 使用類似c1.color的方式可以指定某個特定變數
String 是定義字串,使用“”、%s
char 是定義字元,使用‘’、%c
構造方法決定類生成物件的方式有 this、new
封裝 = 類 + 訪問控制(public,protected,private...)

物件相等

由於浮點數誤差的關係,為了得到更好的精確度,使用java.math.BigDecimal類
這個類提供運算plus()/add()、substract()、multiply()、divide()
== 與 equals的區別: ==比較的物件的地址、 equals 是邏輯上相等
例如定義的兩個
BigDecimal a =new BigDecimal(“0.1”); BigDecimal a =new BigDecimal(“0.1”);System.out.println(a==b);//顯示錯誤
System.out.println(a.equals(b));//顯示正確

4.2 基本型別包裝

為了讓Java的基本型別像類一樣使用 int-Integer、 long-Long、 byte-Byte、 float-Float、 double-Double、 boolean-Boolean
Integer a = new Integer (10); 
操作Integer的以double型別返回
System.out.println(a.doubleValue()/3);//列印3.3333333...
compareTo(),相同返回0、小於返回-1、否則返回1
System.out.println(a.compareTo(a));

4.3 陣列物件

Java中,陣列是物件
定義陣列的方式 int[] a;
與C語言不同,Java檢查陣列邊界,越界會觸發ArrayIndexOutOfBoundsException異常
可以用 a.length檢視a陣列的長度

在java.util.Arrays類中有一個fill()方法可以給陣列所有數賦同一個值,使用方法如下Arrays.fill(a,60);

陣列複製

java.util.Arrays類中有個快捷的陣列複製方法 Arrays.copyOf(a,a.length);

4.4 字串物件

定義字串使用String
a.charAt(0)//顯示第一個字元
a.toUpperCase()//顯示字串
把字元組變為字串
char[] cs={'n','a','m','e'};String name =new String(cs);
或者使用String的toCharArray()方法 char[] cs2=name.toCharArray();

第五章 物件封裝

5.1封裝

封裝是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式,其目的主要就是隱藏物件細節,將物件當作黑箱進行操作。如同以前的使用過的一樣,使用者會呼叫建構函式,但不知道建構函式的細節,會呼叫方法卻不知道流程,要操作物件,一律得通過你提供的方法呼叫

5.2類語法細節

建構函式

private:許可權修飾,類私有,使用者無法在其他類程式碼中直接讀取,而public則可以

建構函式特點:首先,函式名與類名相同,其次,不用定義返回值型別,另外不可以寫return語句。 建構函式作用是給物件進行初始化,多個建構函式是以過載的形式存在的。

this關鍵字

this代表其所在函式所屬物件的引用,簡而言之就是this代本類物件的引用,當在函式內需要用到呼叫該函式的物件時,我們就可以使用this。 this()代表了呼叫另一個建構函式,至於呼叫哪個建構函式,則視呼叫this()時給的自變數型別與個數而定。注意:this()呼叫只能出現在建構函式的第一行

static關鍵字

static用於修飾成員(成員變數和成員函式),被宣告為static的成員,不會讓個別物件擁有,而是屬於類。 在static方法中不能出現this關鍵字,static方法中不能用非static資料或方法成員。 import static語法是為了偷懶,但要注意名稱衝突的問題。被宣告為static的成員,是將類名稱作為名稱空間。

 

教材學習中的問題和解決過程

1.

其實這一章內容開始不是很好理解,因為之前對物件沒有一個概念。所以看了好幾遍書也不太懂,想到要程式碼託管,於是就把書上的程式碼抄了一遍。在敲程式碼的過程中,有了新的理解,讀百卷書也要走萬里路。

2.

在最開始接觸物件時,感覺和C語言中的結構體struct很像。C語言是程式導向的,Java是物件導向的,但是java的類更加強大,畢竟java是建立在c語言之上,類中還可以定義函式,很厲害。

程式碼除錯中的問題和解決過程

這個我覺得裡面有很多知識點的程式碼

其他(感悟、思考等,可選)

1.

在java.util.Scaaner裡面有類似c語言的scanf的讓使用者輸入,使用方式
Scanner scanner =new Scanner(System.in); guess=scanner.nextInt();
這個是使用者輸入下一個整型的數字,可把nextInt改為nextLong、nextDouble等
如果直接取得上一個字串,則使用next()
想取得使用者輸入的整行文字,則使用nextLine()

2.

增強式for語言 for(int score:scores) 這是取出scores裡的第一元素賦值給score然後執行語句,然後取出scores裡的第二元素賦值給score然後執行語句,直到全部執行完畢
增強式的for語句走訪二維陣列 for(int[] row:cords){for(int value:row){}}

 

程式碼託管截圖如下

學習進度條

 

程式碼行數(新增/累積)

部落格量(新增/累積)

學習時間(新增/累積)

重要成長

目標

3500行

28篇

300小時

 

 第一週

200/200

1/1

10/10

 

 第二週

 300/500

 1/2

 20/30

 

 第三週

 300/800

 1/3

 20/50

 

 第四周

 

 

 

 

 第五週

 

 

 

 

參考資料

相關文章