全部代碼均已託管html
地址https://git.oschina.net/qiaokeli26/codesjava
按照下面程序結果中的代碼名來對應便可。git
一、定義類算法
這裏引用書上的一段代碼來理解: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:數組
也是用一個書上的例子,代碼託管上去,這裏只給出運行結果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 |