java先導課程學習總結

  通過兩個星期四節課的java學習,我也對java這門語言有了必定的認識。剛開始上課的時候,我認爲java把C語言中老師所說的模塊化編程進行了強調,進行一個類,一個類的編程,在類中構造相應的方法,使用的時候再調用。這樣可以減小重複的代碼,同時能讓代碼總體看上去比較整潔。這樣寫起程序來,調試比較容易,eclipse的自動糾錯功能用起來也很是好用,感受寫成一個java的程序在有C語言的基礎上仍是比較容易完成的。後來慢慢地,老師向咱們介紹了面向對象的各種思想以及這些思想在java語言中的使用。後來可以明顯感受到,隨着面向對象的各種思想引入以及java語言特色的介紹後,寫起程序來難度愈來愈大了。這是我對面向對象先導課的總體印象。java

  這門課讓我學到的:python

  

  總結一下我的在此次先導課程中所學到的。關於第一節課中的整體內容在第一篇博客中整體已經有所總結,這裏對後來所瞭解到的內容進行補充。算法

  首先是構造函數,構造函數能夠有多種不一樣的構造函數,這裏涉及到老師上課說過的java類中方法名能夠相同,但只要參數個數或者參數類型,返回值類型等不一樣就會被斷定成不一樣的方法。因此常常會存在方法名相同可是參數類型不一樣的狀況,好比說String類型中的indexOf方法,能夠是一個參數,也能夠是兩個參數,均可以實現各自的目標。因此構造方法也能夠有多個,構造方法的方法名與類名相同。若是沒有定義構造方法的狀況下,對象中各屬性均初始化爲默認值,如integer類型的值初始化爲0等。編程

  java的輸入輸出也頗有特色,剛開始學習C語言的時候,也是先學輸出,以後再教輸入。可是C語言的輸入輸出種類並非不少,java的輸入輸出種類劃分很細,基本可以知足你在C語言中所要實現的輸入輸出功能。java的輸出代碼較爲簡潔,基本幾行就能夠解決。但輸入代碼感受寫起來比較繁瑣。以後瞭解到,java的輸入輸出是基於流的輸入輸出,這樣可以使得程序的輸入輸出獨立於設備,並不關心數據源來自哪裏。java的數據流分爲字符流和字節流,咱們課上所用的通常都是字符流,經過BufferedReader進行相應的輸入。數組

  Java的接口是面向對象的一個重要思想,利用java的接口,咱們能夠在接口裏面定義相應的抽象方法,java接口是java面嚮對象語言的一個重要機制。利用該機制,咱們可使得代碼更加簡潔。這些是老師上課所告訴咱們的。但上完課後,對於接口的意義還不是很可以理解。這裏再對接口的相關內容進行補充。首先由於接口定義的是抽象方法,相應的具體方法在類中還要進行重構,感受是否有接口的影響應該不大。後來經過上網查閱資料瞭解到相關內容。理解爲何不直接在類中定義相應方法涉及到抽象類的相關內容。在java程序裏面多寫一個接口或者是抽象類,是爲了多態可以實現,若是不用抽象類或者接口進行多態的實現,那麼程序中可能就要重載許多個意義相同的方法,而且每增長一個類,就須要重載相應的方法。代碼簡介度和維護性太低。利用接口或者抽象類來編寫程序的話,就可以編寫出實現了多態的程序,大大下降了代碼的重複性,使得代碼看上去較爲簡潔。同時可以使得後面若是要進行增長類等操做變得更加方便簡單。雖然抽象類的實現與接口的實現很是類似,但抽象類與java接口是java的兩種不一樣機制。抽象類是利用java的繼承來進行的,可是java的類不能夠多繼承,因此這個時候,接口就能夠派上用場了。利用接口,java程序能夠從別的地方實現實現相應的方法。安全

  其次是java字符串的處理,java字符串處理是將字符串抽象爲類進行管理。經過相應的方法對字符串進行操做,大大簡化了程序中字符串處理相關的代碼,從中就能夠感受出java中以類進行編程的方法的優點。Java中字符串的處理有不少相應的方法,在我以前所寫的博客中有所記錄,做業中咱們常常用到split方法來進行對字符串的分割。C語言中字符串處理主要是靠對數組進行相應的操做,每次都要進行代碼的重寫而且還容易出錯。而java將字符串抽象爲類以後,每次根據要處理的內容主要對方法進行改動便可。僅僅只是對方法進行調用,而不用去管方法背後是如何實現這些操做的。並不像C語言同樣,每次都要從頭開始寫,大大簡化了程序對字符串的操做。數據結構

  java的運行速度以前是在大一的時候,在學python時所提到過,C語言的運行速度能夠說是高級語言裏面運行速度最快的語言,而java的速度稍微慢一點,可是也比python快。在進行了先導課的學習以後,瞭解到了java的運行速度慢的一些緣由,java隱藏了指針,因此程序不可以直接對內存分配等進行管理。java就要自動進行頻繁的GC活動來對內存進行回收等。儘管這樣作使得程序的安全性獲得了提升,可是這樣也拖慢了程序的運行速度。固然,無論什麼語言,數據結構和算法的優劣都會很大程度上影響程序的運行速度。eclipse

  做業中所遇到的困難數據結構和算法

  而這幾回愈來愈有挑戰的做業中遇到的困難,在以前的博客有所說起,這裏進行相應的補充。第一次做業根據助教給的說明文檔,在寫最後一個方法的時候,並無認識到java中將對象也能夠做爲返回值使用,因此最後沒有可以按照助教所給的說明文檔寫出相應的方法。java中將各類數據抽象爲對象,在java中對對象能夠進行不少相應的操做,好比能夠將對象做爲參數進行傳遞,將對象做爲返回值或者建立對象的數組等相應的操做。第二次做業中,由於以前沒怎麼接觸過輸入輸出,因此在輸入輸出方面遇到了比較多的困惑,後來查閱到文件的經過文件進行輸入能夠採用BufferedReader來進行,而經過控制檯進行輸入的話,能夠採用Scanner這個類來進行輸入。Scanner這個類能夠直接將控制檯的內容讀入後進行處理。同時第二次做業寫的過程當中還充滿了對接口的疑惑。後來逐漸瞭解到,那個做業自己並非必定須要接口,只是結合第一次做業若是能夠用接口實現的話,就能夠實現了上文中對接口能夠從別的地方實現相應的方法這一個功能,可以對接口有所熟悉。第三次做業並無其他面向對象思想的介紹,可是在課上自測的時候,遇到了很是嚴重的BUG。在每一行的字符串處理的時候,都是直接就用了indexOf,並無進行其餘處理,致使若是查找of單詞,出現的位置是第一個字符of的位置,而字符of是包含在其餘單詞中的。後來課下進行debug後明白,應該每次查找位置後,調整每次indexOf起點的位置,是的每一個單詞查找到以後,就從查找範圍內去掉。從此次課上自測能夠看出,其實本身不少時候很難發現BUG,即便有時候可能比較明顯。因此,每次的課下自測過程其實很重要。最後做業的過程當中,HashMap根據網上的教程,使用起來還算好,可是咱們的程序怎麼組織HashMap一開始比較不知所措。剛開始想定義一個新類,類中有第一個單詞和第二個單詞兩個屬性,而後HashMap的Value裏面存儲該詞組出現的次數,後來發現這樣進行操做的話,單詞的查找等會有挺多有問題的地方,通過了幾回嘗試以後,採用了最後做業的方法。算是可以看起來輸出好像是對的答案了。模塊化

  對本課程的建議:

  此次先導課是我第一次接觸java,可是上下來以後。我感受吳老師和助教幫助咱們打開了java的大門。也給咱們指明瞭一條順利度過oo課程的道路。課程總體上給個人感受是挺好的,強調編程實踐,課上老師帶着你們編程,課下老師和助教總會在羣裏幫助你們解決問題。總結上次課的錯誤等,均可以從中學到不少東西。我想提的一個建議是,每次做業是否能夠給咱們展現一份完成比較好的優秀做業代碼。這樣咱們能夠經過閱讀其餘寫的好的代碼瞭解java的編程習慣和規範等。若是懼怕你們直接閱讀代碼而不本身課下去修改本身程序中原來存在的BUG的話,大能夠在課程結束的時候,將全部做業優秀的代碼給你們一份,讓咱們能夠有借鑑學習的地方。

相關文章
相關標籤/搜索