对java这门课程的认识_关于java课程的总结
前言
本次博客主要內(nèi)容為此次三次作業(yè)的總結(jié),整門(mén)java課程學(xué)習(xí)的總結(jié),以及在此次java課程中的收獲,和對(duì)課程的意見(jiàn)。
作業(yè)過(guò)程總結(jié)
第一次作業(yè)主要考察的是對(duì)程序的可擴(kuò)展性,實(shí)現(xiàn)開(kāi)閉原則非常重要,因?yàn)槌绦螂S著時(shí)間,需求會(huì)有所變化,避免需求變化時(shí),代碼的大量改動(dòng)。
1、
可擴(kuò)展性指的就是實(shí)現(xiàn)開(kāi)閉原則,以后想要增加新的雨刷,可以實(shí)現(xiàn)盡量不修改代碼下,只要增加代碼,我的思路是新建一個(gè)接口有控制汽車(chē)刻度盤(pán),抽象類(lèi)負(fù)責(zé)擋位。新增雨刷只要接口就行。新增一個(gè)agent類(lèi)就行了。
interfaceAgent2{public voiddealSpeed();
}abstract classdeal{public voidleverUp() {
}public voidleverDown() {
}public voiddialUp() {
}public voiddialDown() {
}
}
第二次作業(yè)主要考察的是map,set,list等的應(yīng)用,運(yùn)用hashmap可以同時(shí)記錄數(shù)值和字符。
1、
需要將字符和出現(xiàn)次數(shù)同時(shí)存進(jìn)hashmap,運(yùn)用set存儲(chǔ)key值,運(yùn)用object數(shù)組儲(chǔ)存set,array對(duì)array中的key進(jìn)行排序得到。
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
第三次作業(yè)主要考察的是棧的應(yīng)用,以及判斷運(yùn)算符優(yōu)先級(jí)及算法的運(yùn)用。
1、
主要考察的是對(duì)棧的運(yùn)用,熟練使用peeek()和pop(),可以先把數(shù)字和運(yùn)算符分開(kāi)并一起保存在listl里面,然后一邊將數(shù)字和運(yùn)算符存進(jìn)棧,一邊判斷即將存進(jìn)棧的運(yùn)算符和棧頂運(yùn)算符的優(yōu)先級(jí),棧頂優(yōu)先級(jí)大的,就提出數(shù)字棧的前兩個(gè)進(jìn)行運(yùn)算,棧頂優(yōu)先級(jí)小的,則不進(jìn)行運(yùn)算而是將即將進(jìn)棧的運(yùn)算符入棧。另外判斷運(yùn)算符優(yōu)先級(jí),當(dāng)運(yùn)算符比棧頂?shù)倪\(yùn)算符優(yōu)先級(jí)小,則在數(shù)字棧開(kāi)始運(yùn)算。
//判斷符號(hào)優(yōu)先級(jí)
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 '
}
}
三次作業(yè)之間的知識(shí)迭代關(guān)系:第一次作業(yè)考察的是代碼的可擴(kuò)展性,第二次第三次均考察到了數(shù)據(jù)結(jié)構(gòu),運(yùn)用hashmap,set,棧來(lái)解決問(wèn)題。在這三次作業(yè)中,我所花費(fèi)的時(shí)間大約是1:3:1,在這三次作業(yè)中,我了解并熟悉了什么才是開(kāi)閉原則,需求的改變使得一個(gè)程序必須要有可復(fù)用性,可擴(kuò)展性,這樣的程序才是令人滿(mǎn)意的。map,list,set等數(shù)據(jù)結(jié)構(gòu)可以更好地幫助我們處理數(shù)據(jù)并提高解決問(wèn)題的效率。從中我也知道了,一個(gè)滿(mǎn)意的程序要實(shí)現(xiàn)開(kāi)閉原則,可擴(kuò)展性越高,代碼的壽命也就越長(zhǎng)。
java課程學(xué)習(xí)的總結(jié)
在這幾個(gè)月,通過(guò)網(wǎng)絡(luò)課堂的學(xué)習(xí)以及在pta平臺(tái)的作業(yè)下,我由原來(lái)的面向過(guò)程思想已經(jīng)過(guò)渡為面向?qū)ο笏枷?#xff0c;熟悉了代碼的測(cè)試,并且學(xué)到j(luò)ava fx 圖形界面等知識(shí)。
(1)代碼測(cè)試的重要性
一個(gè)程序需要考慮多種輸入,多種情況,從此次java課程的學(xué)習(xí)中,我了解并熟悉了數(shù)據(jù)的異常處理,大數(shù)值的處理等。運(yùn)用catch,try等處理異常數(shù)據(jù),在輸入的數(shù)據(jù)超過(guò)數(shù)據(jù)類(lèi)型最大值時(shí),例如輸入的數(shù)據(jù)超過(guò)int型最大值。靈活使用算法解決,特殊情況需要特殊判定,例如除法中,分母為0的情況,閏年2月為2天,12月31日后一天等等。以及邊緣測(cè)試,例如比如輸入的范圍是[0,1],可取0,1,-1,11作測(cè)試點(diǎn)。多次作業(yè)中都涉及到了數(shù)據(jù)的錯(cuò)誤輸入,如何判斷以及輸出wrong format,pta上的作業(yè)使我熟悉了如何對(duì)代碼進(jìn)行測(cè)試。
(2) 面向?qū)ο笏枷氲睦斫?/p>
之前在學(xué)習(xí)c語(yǔ)言的時(shí)候是面向過(guò)程思想,在學(xué)習(xí)到j(luò)ava時(shí),我了解到了面向?qū)ο笏枷?#xff0c;并發(fā)現(xiàn)面向?qū)ο笏枷肱c面向過(guò)程思想的不同以及它的優(yōu)點(diǎn)。面向過(guò)程是單純針對(duì)過(guò)程,一個(gè)一個(gè)步驟解決,通過(guò)各個(gè)函數(shù)實(shí)現(xiàn),面向?qū)ο笫前岩粋€(gè)問(wèn)題分為幾個(gè)類(lèi)。類(lèi)中有自己的屬性和方法,一個(gè)類(lèi)做自己的事。面向?qū)ο笏枷肟梢詭椭覀兲岣叽a的可擴(kuò)展性,實(shí)現(xiàn)高聚合,低耦合的特性。而且遇到中間要比較大的改動(dòng)時(shí),面向過(guò)程往往需要大量修改代碼,而面向?qū)ο笾恍枰鶕?jù)模塊選擇需要改的部分修改即可。
(3) 關(guān)于面向?qū)ο笕蠹夹g(shù)特性的理解
關(guān)于這三大技術(shù)特性:封裝性,繼承性,多態(tài)性。封裝性就是把一些東西封裝成類(lèi),并用protected,private設(shè)置訪(fǎng)問(wèn)權(quán)限,一個(gè)一個(gè)的類(lèi)體現(xiàn)了面向?qū)ο蟮乃枷搿@^承性使得每個(gè)類(lèi)都有一些共性,子類(lèi)可以有父類(lèi)的方法,使得代碼量有所減少。多態(tài)性是建立在繼承性上的,多個(gè)類(lèi)繼承至同一父類(lèi),子類(lèi)有著不同的動(dòng)作,多態(tài)大多用于接口,使接口得以重用。
java課程的收獲
(1) 關(guān)于從pta作業(yè)中學(xué)到的新知識(shí)
新知識(shí)就是面向?qū)ο蟮乃枷?#xff0c;三大技術(shù)特性的應(yīng)用,并且了解到了一些算法,令我印象最深的應(yīng)該是正則表達(dá)式了,幾乎每一次作業(yè)都有,不得不說(shuō)正則表達(dá)式可以快速解決一些字符串處理問(wèn)題,以及判斷輸入的格式正確與否,用到最多的應(yīng)該是pattern和matcher了。各種數(shù)據(jù)結(jié)構(gòu)的用法,比如hashmap,棧。
(2) 在pta上得到的教訓(xùn)
第一個(gè)就是格式了,哪怕是一個(gè)空格也會(huì)報(bào)錯(cuò),代碼要精簡(jiǎn),代碼長(zhǎng)且沒(méi)有意義是沒(méi)有用的,例如。 做題目一定要把題目分析完再做,比如題目給的輸入輸出規(guī)則,看解題報(bào)告,不然等于白做或者做到中間做不下去。
(3) 從java fx中學(xué)到的新知識(shí)
從開(kāi)始的按鈕設(shè)計(jì)到pane,幾種box的學(xué)習(xí),再到設(shè)計(jì)一個(gè)計(jì)算器界面,再到按鈕事件,鍵盤(pán)事件,鼠標(biāo)事件,將代碼和圖形界面對(duì)接,這無(wú)疑是我在此次java課程中的又一大收獲,圖形界面賦予代碼新的靈魂。
關(guān)于對(duì)課程的建議
建議以后的pta題量像最后幾次作業(yè)一樣,題量可以減少。。
總結(jié)
以上是生活随笔為你收集整理的对java这门课程的认识_关于java课程的总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql环形复制的弊端_Docker+
- 下一篇: java程序流程控制_java程序流程控