对java这门课程的认识_关于java课程的总结
前言
本次博客主要內容為此次三次作業的總結,整門java課程學習的總結,以及在此次java課程中的收獲,和對課程的意見。
作業過程總結
第一次作業主要考察的是對程序的可擴展性,實現開閉原則非常重要,因為程序隨著時間,需求會有所變化,避免需求變化時,代碼的大量改動。
1、
可擴展性指的就是實現開閉原則,以后想要增加新的雨刷,可以實現盡量不修改代碼下,只要增加代碼,我的思路是新建一個接口有控制汽車刻度盤,抽象類負責擋位。新增雨刷只要接口就行。新增一個agent類就行了。
interfaceAgent2{public voiddealSpeed();
}abstract classdeal{public voidleverUp() {
}public voidleverDown() {
}public voiddialUp() {
}public voiddialDown() {
}
}
第二次作業主要考察的是map,set,list等的應用,運用hashmap可以同時記錄數值和字符。
1、
需要將字符和出現次數同時存進hashmap,運用set存儲key值,運用object數組儲存set,array對array中的key進行排序得到。
Map hashMap = new HashMap(); //定義hashmap
Setset =hashMap.keySet();
Object[] array=set.toArray();
Arrays.sort(array);for(Object key:array){
System.out.println(hashMap.get(key) + "\t" +key );
}//遍歷hashmap
第三次作業主要考察的是棧的應用,以及判斷運算符優先級及算法的運用。
1、
主要考察的是對棧的運用,熟練使用peeek()和pop(),可以先把數字和運算符分開并一起保存在listl里面,然后一邊將數字和運算符存進棧,一邊判斷即將存進棧的運算符和棧頂運算符的優先級,棧頂優先級大的,就提出數字棧的前兩個進行運算,棧頂優先級小的,則不進行運算而是將即將進棧的運算符入棧。另外判斷運算符優先級,當運算符比棧頂的運算符優先級小,則在數字棧開始運算。
//判斷符號優先級
String s1 = operator.peek();if (s.equals("*")||s.equals("/")) {if (s1.equals("+") || s1.equals("-")) {return '>';
}if (s1.equals("*") || s1.equals("/")) {return '
}if (s1.equals("(")) {return '>';
}if (s1.equals(")")) {return '
}if (s1.equals("#")) {return '>';
}
}if (s.equals("+") || s.equals("-")) {if (s1.equals("+") || s1.equals("-") || s1.equals("*") || s1.equals("/")) {return '
}if (s1.equals(")")) {return '
}if (s1.equals("(")) {return '>';
}if (s1.equals("#")) {return '>';
}
}if (s.equals("(")) {return '>';
}if (s.equals("#")) {if (!s1.equals("#")) {return '
}else{return '=';
}
}if (s.equals(")")) {if (s1.equals("(")) {return '=';
}else{return '
}
}
三次作業之間的知識迭代關系:第一次作業考察的是代碼的可擴展性,第二次第三次均考察到了數據結構,運用hashmap,set,棧來解決問題。在這三次作業中,我所花費的時間大約是1:3:1,在這三次作業中,我了解并熟悉了什么才是開閉原則,需求的改變使得一個程序必須要有可復用性,可擴展性,這樣的程序才是令人滿意的。map,list,set等數據結構可以更好地幫助我們處理數據并提高解決問題的效率。從中我也知道了,一個滿意的程序要實現開閉原則,可擴展性越高,代碼的壽命也就越長。
java課程學習的總結
在這幾個月,通過網絡課堂的學習以及在pta平臺的作業下,我由原來的面向過程思想已經過渡為面向對象思想,熟悉了代碼的測試,并且學到java fx 圖形界面等知識。
(1)代碼測試的重要性
一個程序需要考慮多種輸入,多種情況,從此次java課程的學習中,我了解并熟悉了數據的異常處理,大數值的處理等。運用catch,try等處理異常數據,在輸入的數據超過數據類型最大值時,例如輸入的數據超過int型最大值。靈活使用算法解決,特殊情況需要特殊判定,例如除法中,分母為0的情況,閏年2月為2天,12月31日后一天等等。以及邊緣測試,例如比如輸入的范圍是[0,1],可取0,1,-1,11作測試點。多次作業中都涉及到了數據的錯誤輸入,如何判斷以及輸出wrong format,pta上的作業使我熟悉了如何對代碼進行測試。
(2) 面向對象思想的理解
之前在學習c語言的時候是面向過程思想,在學習到java時,我了解到了面向對象思想,并發現面向對象思想與面向過程思想的不同以及它的優點。面向過程是單純針對過程,一個一個步驟解決,通過各個函數實現,面向對象是把一個問題分為幾個類。類中有自己的屬性和方法,一個類做自己的事。面向對象思想可以幫助我們提高代碼的可擴展性,實現高聚合,低耦合的特性。而且遇到中間要比較大的改動時,面向過程往往需要大量修改代碼,而面向對象只需要根據模塊選擇需要改的部分修改即可。
(3) 關于面向對象三大技術特性的理解
關于這三大技術特性:封裝性,繼承性,多態性。封裝性就是把一些東西封裝成類,并用protected,private設置訪問權限,一個一個的類體現了面向對象的思想。繼承性使得每個類都有一些共性,子類可以有父類的方法,使得代碼量有所減少。多態性是建立在繼承性上的,多個類繼承至同一父類,子類有著不同的動作,多態大多用于接口,使接口得以重用。
java課程的收獲
(1) 關于從pta作業中學到的新知識
新知識就是面向對象的思想,三大技術特性的應用,并且了解到了一些算法,令我印象最深的應該是正則表達式了,幾乎每一次作業都有,不得不說正則表達式可以快速解決一些字符串處理問題,以及判斷輸入的格式正確與否,用到最多的應該是pattern和matcher了。各種數據結構的用法,比如hashmap,棧。
(2) 在pta上得到的教訓
第一個就是格式了,哪怕是一個空格也會報錯,代碼要精簡,代碼長且沒有意義是沒有用的,例如。 做題目一定要把題目分析完再做,比如題目給的輸入輸出規則,看解題報告,不然等于白做或者做到中間做不下去。
(3) 從java fx中學到的新知識
從開始的按鈕設計到pane,幾種box的學習,再到設計一個計算器界面,再到按鈕事件,鍵盤事件,鼠標事件,將代碼和圖形界面對接,這無疑是我在此次java課程中的又一大收獲,圖形界面賦予代碼新的靈魂。
關于對課程的建議
建議以后的pta題量像最后幾次作業一樣,題量可以減少。。
總結
以上是生活随笔為你收集整理的对java这门课程的认识_关于java课程的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql环形复制的弊端_Docker+
- 下一篇: java程序流程控制_java程序流程控