20145314鄭凱傑 《Java程序設計》第3周學習總結

20145314鄭凱傑 《Java程序設計》第3周學習總結

全部代碼均已託管html

地址https://git.oschina.net/qiaokeli26/codesjava

按照下面程序結果中的代碼名來對應便可。git

教材學習內容總結

一、定義類算法

  1. 按照書上的形象比喻,知道的關係是:類是對象的設計圖,對象是類的實際類型。另外,定義時用class,建實例用new。

這裏引用書上的一段代碼來理解:spring

class Clothes 
{
String color;
char size;
}
public class Field
{
public static void main(String[] args)
{
Clothes sun = new Clothes();
Clothes spring = new Clothes();

sun.color = "red";
sun.size = 'S';
spring.color = "green";
spring.size = 'M';
System.out.printf("sun(%s,%c)%n",sun.color,sun.size);
System.out.printf("spring(%s,%c)%n",spring.color,spring.size);}
}

這裏,sun就是一個類類型變量,類類型變量指向的是對象。
運行結果1:數組

  1. this關鍵字的使用:參考名稱與對象數據成員同名時,能夠在數據成員前使用this區別。

也是用一個書上的例子,代碼託管上去,這裏只給出運行結果2:數據結構

二、標準類ide

一、java.util.Scanner、java.math.BigDecimal分別爲兩個基本標準類。函數

java.util.Scanner的nextInt()方法會看標準輸入中,錄入下一個字符串,並會嘗試將之剖析爲int類。一旦直接取得上一個字符串,則使用next()。nextLine()這是一個更加方便的功能,直接取得用戶輸入的整行文字,相似於C中的gets和getc之間的關係。學習

另外,還有nextByte()、nextShort()之類的功能也是以此類推的。

接下來也用書上的例子進行練習:

同上,代碼託管,給運行結果3-1,3-2(中間嘗試了好久,爆炸):

二、java.math.BigDecimal則爲更加精確的精度。實驗截圖以下(代碼已託管),運行結果4:

用BigDecimal比較相等時,先調用add(),最後調用equals()比較兩個BigDecimal實質上是否相同。

運行結果5以下:

二、基本類型打包器

Long、Integer、Double、Float、Boolean等,就是所謂的打包器。其主要目的是提供對象實例做爲「殼」,將基本類型打包在對象之中,就能夠將基本類型看成對象操做。書上的簡單練習例子以下:

運行結果6:

這裏出現了一個問題,當decimal類型進行devide運算時,出現了報錯問題(陳俊達在上課時問過老師)。老師給出的回覆是,在輸出語句時還能夠加上必定的後綴(一些精度信息)從而才能輸出正確的值。

三、數組

一、數組的基本使用

與C中同樣,數組的概念同樣只是出現了使用方式上的不一樣,採用前後兩個數組錄入。

二、操做數組對象

截圖以下(運行結果7):

三、數組複製

首先,再創建一個數組,再對這個數組進行轉移,就是一個簡單的方法。另外,還可使用arrays.copyOf():

立刻就使用這個函數進行練習:

結果以下(運行結果8):

值得一提的是arrays.copyOf()和System.arraycopy()用在類類型聲明的數組時,都是淺層複製。而什麼是深層複製呢,arrays.copyOf()的第二個參數,實際上就是指定創建的新數組長度。以範例來分析深層複製:

運行結果9:

四、字符串

字符串使用java.lang.String實例,用來打包字符數組。

可使用length()取得字符串長度。

另外還可使用charAt()指定取得字符串中某個字符,使用toUppercase()將本來小寫的字符串內容轉爲大寫。

書上實例oneto100

截圖以下(運行結果9):

接下來用另外兩個實例繼續熟悉一下字符串的用法:

運行結果10:

運行結果11:

至此,第四章內容結束,接下來直接總結下第五章的內容,再附上程序截圖:

一、封裝

封裝即要隱藏對象細節,直接使用對象而忽略不重要因素。

二、構造函數

首先,函數名與類名必須相同。接着,咱們知道返回值類型將與前邊一致,就能夠忽略不定義。

三、this

this表明了其所在函數所屬對象的引用。

四、static

被聲明爲static的成員,不會讓個別對象擁有,而是屬於類,將類名稱做爲名稱空間。在static方法或區塊中不能出現this關鍵字。

接下來跑幾個書上的實用範例

1、構造函數與方法重載

運行截圖(運行結果12):

2、運行結果13:

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

此次學習時,遇到一個問題,浮點類型能不能用 == 進行比較,只知道盡可能不要使用 == 對浮點數進行比較。我對這個問題比較好奇,由於當時C語言的時候沒有深刻探究過,今天就好好研究一次。

首先咱們要了解浮點數在計算機中怎麼存放的。我百度了一下,上面是這樣說的,浮點數廣泛的做爲實數運算的近似值的計算,是頗有用的。

這裏說的是實數的近似值的計算,因此浮點數在計算機中實際上是一種不精確的表示。它存在舍入(rounding)偏差。IEEE浮點標準用符號,尾數和階碼將浮點數的位表示劃分爲三個字段,單精度爲32位,雙精度爲64位,由於表示方法限制了浮點數的範圍和精度,浮點運算只能近似的表示實數運算。而 == 表示的是在計算機中的內存表示徹底同樣,這樣使用 == 來表示兩個浮點數的相等就會出現問題了。

代碼調試中的問題和解決過程

本次我沒有編寫本身的代碼,都是模仿書上的代碼。可是我看見了陳俊達同窗所改進的一次代碼。即用decimal類型進行devide。結果4除以3,結果沒法顯示出來。

後來詢問過老師後發現,輸出時還須要加一個括號,括號中將錄入必定的精度,從而才能完成顯示。但這種方式實用性不高,這邊就再也不深究了。

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

本章內容多,並且專業性強,學起來很費力。因此本次我就沒有在書本例子的基礎上進行創新。

可是,本次將錄入數組,檢索等方法都教過了,我能夠憑藉數據結構的算法,本身編寫一些排序的代碼了。

下週必定要完成這樣的的程序!

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 50/50 1/2 20/20
第二週 600/600 2/4 38/38
第三週 276/600 1/7 60/60
第四周 /1300 2/9 /90

參考資料

相關文章
相關標籤/搜索