java開發(fā)利器myeclipse全面詳解_第1頁
java開發(fā)利器myeclipse全面詳解_第2頁
java開發(fā)利器myeclipse全面詳解_第3頁
java開發(fā)利器myeclipse全面詳解_第4頁
java開發(fā)利器myeclipse全面詳解_第5頁
已閱讀5頁,還剩763頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

作品作品吾嘗終日而思矣,不如須臾之所學(xué)也;吾嘗跂而望矣,不如登高之博見也。登高而招,本書由國內(nèi)知名IT培訓(xùn)北風(fēng)網(wǎng)(http: 網(wǎng)內(nèi)部學(xué)員學(xué)習(xí)交流,任何個(gè)人及機(jī)構(gòu)都無權(quán)。違者!MyEclipse做為一款集成開發(fā)工具,了程序員的工作范圍,能夠很大程度的提MyEclipse的功能是非常強(qiáng)大的,但是筆者在培訓(xùn)教學(xué)中,發(fā)現(xiàn)學(xué)員并沒有使用到其中本書是一本MyEclipse的精裝,目前Java語言的編程工具中最流行的就是MyEclipseJava項(xiàng)目開發(fā)中每一步驟的操作。 作品第1從本章起,就進(jìn)入我們的MyEclipse的開發(fā)之旅。MyEclipse是一款強(qiáng)大的、智能的集成開發(fā)工具,在理論上只需要安裝MyEclipse就可以進(jìn)行日常的開發(fā),因?yàn)樵谕暾腗yEclipse中自帶來JRE、數(shù)據(jù)庫、應(yīng)用服務(wù)器等工具。但是在實(shí)際開發(fā)中,這些集成的工具并不完全適合的,所以MyEclipse還需要借助外部的一些工具和開發(fā)環(huán)境,在本章中就可以學(xué)下如何搭建優(yōu)秀的MyEclipse開發(fā)環(huán)境。 以我們首先要安裝JDK。目前JDK的版本為7.0,但是還處于測試階段,如果真正用于開發(fā),它不是穩(wěn)定的,所以這里我們現(xiàn)在目前穩(wěn)定的JDK6.0版本。 JDK下載K可以從N公司的官方網(wǎng)站進(jìn)行下載,官方首頁地址為“h ”。進(jìn)入首頁后,在橫向?qū)Ш綑谥?,單擊Dnd”菜單,然后在其中選“JaaSE”項(xiàng),將轉(zhuǎn)到選擇JDK的頁面如圖11所示。1-1發(fā)的“JDK6Update17”。單擊后面的“Download1-2?1-2操作系統(tǒng)下的JDK,單擊下面的“Download”按鈕,將進(jìn)入頁面,如圖1-3所示。說明:Java最大的特點(diǎn)就是能夠應(yīng)用在不同操作系統(tǒng)中,所以JDK肯定也是這樣 在該頁面中,單擊“jdk-6u17-windows-i586.exe”超,將彈出框,單擊“保存”按鈕,就可以選擇保存到本地硬盤中。在“jdk-6u17-windows-i586.exe”超 完成后,就可以安裝JDK,Windows操作系統(tǒng)中的JDK安裝是非常簡單的。雙擊的“jdk-6u17-windows-i586.exe”文件,將首先打開證協(xié)議確認(rèn)界面,在其中單擊“接受”按鈕,將彈出自定義安裝界面,如圖1-4所示。1-4

?3其中列表中給出了可選安裝的功能,默認(rèn)是全部選中的,可以單擊前面的按鈕取消安裝,這里保持默認(rèn)值就可以。界面下方是給出的安裝位置,單擊“更改”可以安裝到注意:本地安裝時(shí)就是安裝在默認(rèn)位置下,讀者修改位置后一定要記住具置單擊“下一步”按鈕,將開始安裝JDK。經(jīng)過數(shù)分鐘后JDK完成安裝,將自動(dòng)打Java運(yùn)行時(shí)環(huán)境自定義安裝界面。Java運(yùn)行時(shí)環(huán)境配置和JDK配置完全相同。配置完成后單擊“下一步”按鈕進(jìn)入Java運(yùn)行時(shí)環(huán)境安裝界面。出現(xiàn)安裝完成界面后,單擊“完成”按鈕,將徹底完成JDK的安裝。 目前開發(fā)中主流的數(shù)據(jù)庫有很多,例如Orcal、DB2、SQLServerMySQL等。其中MySQL數(shù)據(jù)庫體積非常小,速度非???,許多中小型為了降低總體擁有成本而選擇了MySQL作為數(shù)據(jù)庫。所以在本書中以MySQL數(shù)據(jù)庫為例進(jìn)行講解, MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫的地址為“/”,在其中可以單擊導(dǎo)版本,但是還是測試版本,所以這里我們選擇5.1版本。單擊對應(yīng)的超,將進(jìn)入MySQL5.1頁面,然后在其中單擊“MySQLCommunityServer”下的“Download”? MySQL數(shù)據(jù)庫在其中選擇“Wndows”操作系統(tǒng)后,其中出現(xiàn)三種形式的版本,其中包括安裝和直接解壓就可用的。這里選擇“WndowsEssentials(x86)”安裝版本,單擊后面的“Download”按鈕,將開始該版本的MySQL數(shù)據(jù)庫。如果單擊“Pickamirror”超將進(jìn)入MySQL數(shù)據(jù)庫用戶的頁面,在其中可以單擊“Nothanks,justtakemetothedownloads!”超跳過該步,然后選擇某一鏡像進(jìn) 下載MySQLmysql-essential-5.1.41-win32.msi”文件,將首先彈出選擇安裝類型界面,如圖1-6所示。 其中“Typcal”表示典型版本,通常就選擇該選項(xiàng),單擊“Next”按鈕,將進(jìn)入安裝界面,如圖1-7所示。題1-

?5其中固定了MySQL的安裝位置,是自動(dòng)安裝在C盤下,單擊“Install”按鈕,將開始安裝MySQL數(shù)據(jù)庫。安裝結(jié)束后,將出現(xiàn)是否配置服務(wù)器的界面,在其中選擇“ConfiguretheMySQLservernow”()復(fù)選框。單擊“Next”按鈕后,可開始設(shè)置數(shù)據(jù)庫服在“MyQLerernsaneofguaonSandrdofguaon”準(zhǔn)設(shè)置)單選按鈕。單擊“ex”按鈕后,將進(jìn)入設(shè)置服務(wù)器選項(xiàng)的界面。在設(shè)置服務(wù)nsalAsWnowsSrve”Wndws服務(wù)和“cudenDrecorynWndowsPATH(添加Bn路徑到PATH環(huán)境變量Next”按鈕后,將出設(shè)置理員的界面。設(shè)置管理員是非常重要的,讀者一定記自己設(shè)置的,在后面學(xué)習(xí)數(shù)據(jù)庫操作和Hibernate時(shí),將多次使用到該。單擊“Next”按鈕,系統(tǒng)將結(jié)束安裝向?qū)В惭bMySQL數(shù)據(jù)庫完成。 服務(wù)器是由Apache開源組織開發(fā)并的,能夠支持JSP和Servlet,以及各種開源框開發(fā)中,經(jīng)常使用Tomcat服務(wù)器來進(jìn)行操作。Tomcat服務(wù)器可以通過Apache開源組織的進(jìn)行,它的地址為“”。在該主頁右側(cè)導(dǎo)航欄中有很多該開源組織開發(fā)的項(xiàng)目,在其中單擊“Tomcat”超,將進(jìn)入Tomcat項(xiàng)目的首頁。在Tomcat項(xiàng)目首頁的左側(cè)Download列表中,單擊“Tomcat6.x”超,將進(jìn)入該版本的頁面,如圖1-8所示。? Tomcat其中“BinaryDistributions”下的文件都是編譯好的二進(jìn)制文件,而“SourceCodeDistributions”下面的文件為Tomcat的源代碼,這里選擇編譯好的二進(jìn)制文件。即Tomcat部署文件,這里選擇“Core”下的文件?!癈ore”下的文件又分為三種,zipWindowstar.gzLinux下的壓縮WindowsServiceInstallerWindows安裝文件。要多余的配置。但是對于例如MySQL數(shù)據(jù)庫這樣的軟件而說,雖然也有解壓縮的安一定要記住該,在后面MyEclipse中還要通過該配置Tomcat。MyEclipse搭建完最基本的開發(fā)工具后,就可以來安裝本書最重要的MyEclipse。在學(xué)習(xí)MyEclipseEclipseEclipseJava桌面開發(fā),如JavaWebEclipse插件。眾多軟件廠商和開源組織開發(fā)了相應(yīng)的插件,其中以MyEclipse插件最為出名并常用。布穩(wěn)定的版本是7.5。如果讀者本地已經(jīng)安裝了6.0以上版本的MyEclipse,完MyEclipse

?7MyEclipse的為“”,因?yàn)镸yEclipse是一款進(jìn)入后,單擊左邊導(dǎo)航欄中的“Try/Download”,打開頁面,然后在其中選擇“MyEclipse7.5GA”,如圖1-9所示。 MyEclipse7.5GA頁MyEclipse7.5GA的安裝分為兩種,一種是“AllinONE”版本,一種是“pulse”版本。其中“AllinONE”版本包含MyEclipse安裝的全部文件,而“pulse”版本為插件安裝版本,需要事先安裝好了相應(yīng)的Eclipse。這里為了安裝方便,選擇其中的“AllinONE”版本。技巧 完成MyEclipse后,就可以雙擊文件進(jìn)行安裝。MyEclipse的安裝是非常簡單的,它的安裝實(shí)際上就是將其中的文件解壓縮到硬盤中。首先出現(xiàn)的是證協(xié)議界面,在其中選擇“Iacceptthetermsofthelicenseagreement”,單擊“Next”按鈕,將彈出選擇安裝的界面,默認(rèn)是安裝在C盤,也可以安裝在其他地方。后面的操作,只需要單擊“Next”按鈕,就能夠進(jìn)行安裝。MyEclipse的安裝時(shí)要花費(fèi)一定時(shí)間的,當(dāng)出現(xiàn)安裝完成頁面后,單擊“Finish”按鈕,將徹底完成MyEclipse的 MyEclipse后,在桌面上就出現(xiàn)一個(gè)啟動(dòng)MyEclipse的快捷方式,它的圖標(biāo)為“”。雙擊該快捷方式,將開始運(yùn)行MyEclipse,首先出現(xiàn)的將是定義工作空間1-10?圖1- 以指定當(dāng)前計(jì)算機(jī)中的。下面的“Usethisasthedefaultanddonotaskagain”,表MyEclipse時(shí)就選擇某做為工作空間后,單擊“OK”按鈕,將開始啟動(dòng)MyEclipse。啟動(dòng)MyEclipse是要花費(fèi)一定時(shí)間的,尤其是當(dāng)計(jì)算機(jī)內(nèi)存比較小時(shí)。啟動(dòng)MyEclipse后,界面如圖1-11所示。1-11在MyEclipse的初始啟動(dòng)界面中,將由一個(gè)初始布局,它通常被稱為。圖是可以改變的,可以通過右上角的“”按鈕,也可以通過在一個(gè)中,由多個(gè)視圖界面組成,當(dāng)前MyEclipse默認(rèn)下,就有以后?9MyEclipse的操作。當(dāng)講解具體操作時(shí),我們再對它們進(jìn)行詳細(xì)的 oWorld程面的講解中,已經(jīng)將開發(fā)環(huán)境搭建成功了,并且已經(jīng)對MyEclipse的每一部分有所了解。在本節(jié)中,就來看一下如何使用MyEclipse進(jìn)行項(xiàng)目開發(fā)。在這里將要開發(fā)一個(gè)非常簡單的oWorld的JavaSE項(xiàng)目。MyEclipseJava程序,那就不需要?jiǎng)?chuàng)建進(jìn)行Java程序開發(fā),就需要先來創(chuàng)建一個(gè)Java項(xiàng)目。在MyEclipse的菜單中,選擇“File”|“New”|“JavaProject”命令,就會(huì)彈出創(chuàng)建Java項(xiàng)目的界面,如圖1-12所示。1-12JavaJava項(xiàng)目的界面中,“ProjectnameJava項(xiàng)目名稱,這里我們輸入 oWorld”。除此之外,還有對新建項(xiàng)目進(jìn)行設(shè)置的選項(xiàng)CreatnewprojectinworkspaceCreatprojectfromexistingsource:在現(xiàn)有位置中創(chuàng)建項(xiàng)目,如果選擇該選項(xiàng),則UsedefaultJRE(Currentlycom.sun.java.jdk.win32.x86_13’):使用UseanexecutionenvironmentJREJREUseprojectfolderasrootforsourcesandclassfiles:使用項(xiàng)目做為源文件和編譯后的文件根。使用該選項(xiàng)造成的就是.java文件和.class文件在一個(gè)目Createseparatefoldersforsourcesandclassfiles:分開存放源文件和編譯后的文件,Addprojecttoworkingsets:添加項(xiàng)目到工作集中,如果選擇該選項(xiàng),則需要指從上面的講解中可以看到只需要填寫項(xiàng)目名稱,其他采用MyEclipse默認(rèn)的選擇就可以。在創(chuàng)建Java項(xiàng)目中可以直接單擊“Finisth”按鈕完成創(chuàng)建Java項(xiàng)目的操作;也可以單擊“Next”按鈕,繼續(xù)對Java項(xiàng)目進(jìn)行設(shè)置,如圖1-13所示。

11在創(chuàng)建項(xiàng)目設(shè)置界面中,可以在選項(xiàng)卡中對源代碼、項(xiàng)目、庫和排序?qū)С鲞M(jìn)行設(shè)置,這bin這個(gè)名稱。單擊“FinishJava項(xiàng)目的操作,但是會(huì)填出一個(gè)選擇視圖的界面,如圖1-14所示。圖1- 按鈕。通常情況下,我們?nèi)匀徊捎肕yEclipse視圖,這是每一個(gè)程序員的習(xí)慣有關(guān)。這經(jīng)過上面的操作,就在MyEclipse的工作空間中創(chuàng)建了一個(gè)名稱為“oWorld”的Java項(xiàng)目。該項(xiàng)目會(huì)出現(xiàn)在包資源管理器中,單擊項(xiàng)目前的加號,可以講項(xiàng)目中的內(nèi)容展開,如圖1-15所示。 就是用戶放置Java源文件的 文件就是該項(xiàng)目采用的JRE文件,這些都是MyEclipse為我們自動(dòng)生成的。MyEclipse建Java項(xiàng)目就有另外式,在包資源管理器中的空白處,單擊鼠標(biāo)右鍵,在彈出菜單中,選擇“New”|“JavaProjectJavaJavaJavaJavaMyEclipse中,選擇“File”|“New”|“Class”命令,就會(huì)出現(xiàn)創(chuàng)建Java類程序界面,如圖1-16所示。1-16Java

13在創(chuàng)建ava程序界面中,“Sourcefolder”表示源代碼保存的位置。“Package示ava程序所在的包,這里我們先采用默認(rèn)的無包情況?!癗ame”表示類名,這里我們輸入“o”,這樣就創(chuàng)建了一個(gè)名稱為“o”的類。“Modifers”表示類的修飾符,在修飾符中可以選擇“public”或者“default”,分別是創(chuàng)建公共類和默認(rèn)訪問修飾類;在非修飾符中可以選擇“”和“final”,雖然這里將它們設(shè)置為復(fù)選框,但是這兩個(gè)修飾符是不能同時(shí)存在的。“Supercass”表示新創(chuàng)建的類所繼承的父類,因?yàn)閍va中的所有的類都繼承“java.lang.Obect”類,所以默認(rèn)新建類也是繼承它的,這里也可以輸入其他的父類,或者單擊“Browse”按鈕選擇要繼承的父類?!癐nerfaces”表示新創(chuàng)建類所實(shí)現(xiàn)的接口,單擊“Add”按鈕可以添加要實(shí)現(xiàn)的接口。因?yàn)橐粋€(gè)類可以繼承多個(gè)接口,所以該操作可以進(jìn)Remove”按鈕,將選中的接口刪除。 圖1- 從圖中可以看到在src下創(chuàng)建了一個(gè)“ o.java”文件,其中“defaultpackage”并JavaJava類程序的代碼顯示出來,代 publicclass{ *@parampublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstub} “o2465Javamain方法后自動(dòng)生成的,如果不選擇該選項(xiàng),是不會(huì)出現(xiàn)該main方法的。將其中的第6行注釋去掉,換成下面的代碼:System.out.println("o ?15MyEclipseJavajavacjava命MyEclipsejavacjavaMyEclipse開發(fā)工具中,編譯時(shí)自動(dòng)完成的,也就是說自動(dòng)生成了.class文件。這里主要是關(guān)心如果運(yùn)行Java類程序,這是需要程序員操作完成的。運(yùn)行Java類程序有多種方式,分別是菜單、和彈出菜單三種方式。在MyEclipse的菜單中,選擇“Run”|“Run”命令,如果在編寫Java類程序時(shí)沒有保存,則會(huì)彈出如圖1-18的界面。 因?yàn)槟壳绊?xiàng)目中只有“o.ava”這一個(gè)類程序處于編寫狀態(tài),如果有多個(gè)程序,則都會(huì)列在該界面中,從而選擇運(yùn)行的程序。選擇后,單擊“OK”按鈕,從而運(yùn)行選中的程序。如果編寫的Java程序已經(jīng)保存,則選擇“Run”|“Run”命令后,直接運(yùn)行當(dāng)前保Ctrl+F11MyEclipse1-191-19其中“oWorldJava說明:除了通過菜單運(yùn)行ava類程序外,還可以通過中的運(yùn)行按鈕執(zhí)行。直接單擊該按鈕,是對上次運(yùn)行的程序再次運(yùn)行,這通過用在開發(fā)過程中,如果想運(yùn)行其他程序,需要通過旁邊的下三角進(jìn)行選擇。在編輯區(qū)中,可以單擊鼠標(biāo)右鍵,在彈出菜單中,選擇“RunAs”|“avaApplication”命令對當(dāng)前程序進(jìn)行運(yùn)行。在上一節(jié)中,我們講解了如何進(jìn)行Java類程序開發(fā)。在Java程序中,除了類之外,實(shí)現(xiàn)接口的類,這些在Java項(xiàng)目的開發(fā)中都是非常重要的。面學(xué)習(xí)創(chuàng)建Java類程序時(shí),并沒有使用到包,而是直接放在src |“Package1-201-20?17其中“Sourcefolder”表示包定義的所在位置,“Name”表示定義的包名。這里的包名可以是一個(gè)單詞,例如“service”,就是創(chuàng)建一個(gè)名稱為“service”的包,使用該包通常保存Web項(xiàng)目中的業(yè)務(wù)邏輯層接口。包名也可以是多個(gè)單詞,中間使用“.”連圖1- 從圖中可以看到“servce”和“ervce.impl”兩個(gè)包都已經(jīng)創(chuàng)建成功了。在包資源管理器中還有另外一種顯示方式,單擊右上角的倒三角,選擇“PackagePreenation”命令,在該命令下有兩個(gè)選項(xiàng),分別是“Flat”和“Hierarchcal”,它們表示兩種顯示包的方式。默認(rèn)的是“Flat”方式,也就是包平面顯示方式,將所有的包并列進(jìn)行顯示,例如上面的圖?!癏erarchical”方式是指分層方式,也就是將子包放在包下。包顯示方式選擇為“Hierarchical”方式,則包資源管理器變化如圖1-22所示。圖1- ?從結(jié)果中可以看到將兩個(gè)包在一起,這是因?yàn)槟壳鞍胁]有任何Java程序造成的結(jié)果。在后面創(chuàng)建Java程序后,讀者可以再來進(jìn)行切換包顯示方式操作。接口也是Java程序中必不可少的一部分。在上一小節(jié)中,已經(jīng)創(chuàng)建了“service”和MyEclipse中創(chuàng)建接口也有多種方式,最常用的就是菜單和右鍵彈出菜單兩種方式,因?yàn)槲覀冞@里要將接口創(chuàng)建在指定的包下,所以建議采用右鍵彈出菜單的方式。在“service”包上,單擊鼠標(biāo)右鍵,在彈出的菜單中,選擇“New”|“Interface”命令,就會(huì)彈出創(chuàng)建接口界面,如圖1-23所示。 在創(chuàng)建接口界面中,“Sourcefodr”表示創(chuàng)建的接口程序所在,“ackag”表示創(chuàng)建的接口所在的包,如果采用右鍵菜單的方式創(chuàng)建,會(huì)自動(dòng)出現(xiàn)選擇的包,例如rv接口?!癕odifiers”表示接口的修飾符,這里可以在public公共修飾符和默認(rèn)修飾符之間選擇?!癊xtendedinterfaces”表示新建接口繼承的父接口,父接口可以由多個(gè),單擊填寫上述信息后,單擊“Finish名為“UserServicepackage?19publicinterface{ 13行加入用于判斷用publicbooleanlogin(Stringusername,String在本小節(jié)中就來學(xué)下如何創(chuàng)建實(shí)現(xiàn)接口的類,這和前面創(chuàng)建普通的類是有所不同的,我們也就該類創(chuàng)建在包下。在“ervce.impl”包上,或者在“impl”子包上,單擊鼠標(biāo)右鍵,在彈出的右鍵菜單中,選擇“New”|“Class”命令,將彈出創(chuàng)建ava類界面,如圖1-24所示。圖1- 因?yàn)槲覀兪峭ㄟ^在包上的右鍵菜單進(jìn)行創(chuàng)建,所以會(huì)將包自動(dòng)添加上。在“Name”中填寫“UerServceImpl”,表示用戶業(yè)務(wù)邏輯實(shí)現(xiàn)類。該類要實(shí)現(xiàn)上一小節(jié)創(chuàng)建的用戶業(yè)務(wù)邏輯接口,所以要在“Inerfaces”中,單擊“Add”按鈕,彈出如圖1-25的選擇接口界面。圖1- 現(xiàn)的接口,單擊“OK注意:一定要保持創(chuàng)建Java類程序界面中 單擊創(chuàng)建Java類程序界面中的“Finish”按鈕,創(chuàng)建實(shí)現(xiàn)接口的類的操作就完成,packageimportpublicclassUserServiceImplimplementsUserServicepublicbooleanlogin(Stringusername,String{//TODOAuto-generatedmethodreturn}}上述代碼都是自動(dòng)生成的代碼,其中第1“service.impl23行自動(dòng)讓新創(chuàng)建的類實(shí)現(xiàn)“UserService”接口,如果該接口類不在同一包下,還會(huì)自動(dòng)導(dǎo)入接口。第4行是自動(dòng)實(shí)現(xiàn)接口中的抽象 作品第2章在上一章中對MyEclipse有了基本了解一下,在本章中就來學(xué)些非常重要的常用開發(fā)操作和技巧。這些都是后面學(xué)習(xí)具體開發(fā)技術(shù)的基礎(chǔ)。根據(jù)操作的內(nèi)容不同,可MyEclipse是一種視圖話的開發(fā)工具,所以我們進(jìn)行設(shè)置操作時(shí)主要是通過配置的手段來完成。這方面的知識點(diǎn)是比較零散的,而且后面的操作要基于其中的某些配置,所因?yàn)楹竺嬷v解代碼時(shí),經(jīng)常要說代碼的行號的,所以先來看一下如何為MyEclipse中的代碼加行號。在MyEclipse的菜單中,選擇“Window”|“Preferences”命令,會(huì)彈出進(jìn)行設(shè)置的界面,如圖2-1所示。2-1在MyEclipse中,大部分的設(shè)置都是通過首選項(xiàng)設(shè)置界面完成的。在其中的左側(cè)菜單中,選擇“General”|“Editors”|“TextEditors”命令,則首選項(xiàng)設(shè)置界面如圖2-2 按鈕,就會(huì)在MyEclipse的編輯區(qū)中,顯示行號。界上,單擊右鍵,在其中選中“Showlinenumbers”選項(xiàng),從而進(jìn)行設(shè)置。具體操作在計(jì)算機(jī)的信息傳輸中,都是通過字節(jié)流的形式傳遞的,在其中就要用到一個(gè)非常目前計(jì)算機(jī)中有多種編碼形式,兩種不兼容的編碼是不能夠結(jié)合使用的。例如A編碼中,123代表“書”這個(gè)字,我們要傳遞“書”這個(gè)字時(shí),接收的就是123。但是在BB編碼中,123對應(yīng)的是“紙”這個(gè)字,那它得到的?3在首選項(xiàng)設(shè)置界面中,選擇“General”|“Editors”|“TextEditors”|“Spelling”命令,就會(huì)出現(xiàn)如圖2-3所示的界面。2-3其中“Encoding”選項(xiàng)就是用來設(shè)置代碼的編碼規(guī)則的,當(dāng)前默認(rèn)編碼是“GBK。如果想換為其他編號,可以選擇“Other”選項(xiàng),然后在后面的下拉列表中選擇相應(yīng)的編碼。這樣就完成改變編碼類型的操作。說明:在MyEclipse中,還可以為每一種程序進(jìn)行相應(yīng)的編碼設(shè)置,例如JSP在項(xiàng)目開發(fā)中,經(jīng)常使用到不同工作空間的兩個(gè)項(xiàng)目,或者別人發(fā)過來的項(xiàng)目不在工作空間中,這時(shí)候就要用到導(dǎo)入項(xiàng)目的操作。通過這種操作可以將項(xiàng)目導(dǎo)入到當(dāng)前工Mycpse中。MyEclipse的菜單中,選擇“File”|“Import2-4? 在其中選擇“General”|“ExistingProjectsintoWorkspace”命令,單擊“Next”按鈕,就會(huì)進(jìn)入導(dǎo)入項(xiàng)目的界面,如圖2-5所示。2-5其中“Selectrootdirectory”表示選擇項(xiàng)目的 ,“Selectarchivefile”表示?5擇項(xiàng)目的根,也可以選擇項(xiàng)目所在的。如果選擇的是項(xiàng)目的根,表示將該項(xiàng)目導(dǎo)入;如果選擇的是項(xiàng)目所在,就會(huì)將該下所有的項(xiàng)目導(dǎo)入。導(dǎo)入到下面 在其中選擇“General”|“ArchiveFile”選項(xiàng),單擊“Next”按鈕,就會(huì)進(jìn)入導(dǎo)出項(xiàng)目界面,如圖2-7所示。2-7“oWorld”項(xiàng)目。在“Toarchivefile”選項(xiàng)中,選擇要到處的位置。這里通常到處ZIP文件。最后單擊“Finish”按鈕,從而在指定的位置出現(xiàn)一個(gè)文件名為“oWorld.zip”的文件,從而完成導(dǎo)出項(xiàng)目的操作。MyEclipse是一種功能非常強(qiáng)大的集成開發(fā)工具,它會(huì)自動(dòng)提醒程序開發(fā)過程中出現(xiàn)的錯(cuò)誤,在出現(xiàn)錯(cuò)誤的代碼行上以紅叉的形式標(biāo)識,如圖2-8所示。 在該UserServiceImpl類程序中,并沒有為login72-9從圖中可以看到,當(dāng)單擊紅叉時(shí),會(huì)彈出一個(gè)窗口,給出兩種解決該錯(cuò)誤的方法。vo給出修改后的部分代碼。具體選擇哪一種修正方式,由程序員根據(jù)實(shí)際需要進(jìn)行選擇,Ctrl+1說明:在MyEclipse中,除了會(huì)顯示程序中的錯(cuò)誤外,還會(huì)對程序的一些地方提出警告,在這代碼的最左端以點(diǎn)亮的燈泡的形式標(biāo)識。警告并不是錯(cuò)誤,只是給出一種建議,例如使用集合時(shí),如果沒有使用泛型,就會(huì)給出警告。JREJREJavaJavaMyEclipseMyEclipseJRE。但是如果想使用版本的JRE,或者想得到的源碼信息,就要自己添加JRE。在首選項(xiàng)設(shè)置界面中,選擇“Java”|“InstalledJREsJRE界面,如圖2-10所示。2-10在其中可以看到默認(rèn)選中的是名稱為“com.sun.java.jdk.win32.x86_13”的JREMyEclipseJRE。單擊“AddJRE,如圖2-11所示。2-11?9在添加JRE界面中,單擊“JREhomedirectory”選項(xiàng)后的“Browse”按鈕,在彈出的界面中選擇安裝JDK后的JRE根,如果是默認(rèn)安裝,則根為“C:\ProgramFiles\Java\jre6JREJRE界面中自動(dòng)按鈕,從而完成JRE的添加操作,從而也在設(shè)置JRE界面中添加一個(gè)新的JRE選項(xiàng)。JREJREJava項(xiàng)目時(shí),經(jīng)常要用到已經(jīng)完成的項(xiàng)目或者程序,它們通常以JAR包的形式出現(xiàn)的。例如在進(jìn)行JDBC操作時(shí),要導(dǎo)入數(shù)據(jù)庫驅(qū)動(dòng)包才能夠正常操作。在開發(fā)中,如果想使用這些JAR包就要進(jìn)行導(dǎo)入JAR包操作。導(dǎo)入JAR包操作有多種方式,這里我們選擇一種最常用、最不易出錯(cuò)的導(dǎo)入方式。JAR包,在MyEclipse中選擇項(xiàng)目根在菜單中選擇“Edit”|“Paste”命令,也可以直接使用“Ctrl+V”快捷鍵,從而將2-12 JAR包選中導(dǎo)入的JAR包,單擊鼠標(biāo)右鍵,在彈出的菜單中,選擇“BuildPath”|“AddtoBuildPathJARBuildPath2-13所示。?2-13注意:導(dǎo)入JAR包時(shí),還有其他方式,可以將外部JAR包不進(jìn)行而是直接導(dǎo)入到項(xiàng)目中,這樣做的產(chǎn)生的就是JAR包和項(xiàng)目的位置都不能變化,不然就需如果已經(jīng)不再用到導(dǎo)入的JAR包,也可以將它刪除。選中要?jiǎng)h除的JAR包,單擊鼠標(biāo)右鍵,在彈出的菜單中,選擇“BuildPath”|“RemovefromBuildPath”命令,就可以將JAR移除項(xiàng)目。JARJavaSEJava項(xiàng)目,導(dǎo)入JAR包時(shí)非常容易的,只需要將JAR包到WebRoot/WEB-INF/lib目說明:在項(xiàng)目進(jìn)行文件的、添加、刪除等操作時(shí),有時(shí)候并不能實(shí)現(xiàn)同步操作,這是和文件類型、計(jì)算機(jī)硬件有關(guān)的。如果不能看到操作結(jié)果,可以在菜單中選擇“File”|“Refresh”命令,或者使用“F5”快捷鍵對項(xiàng)目進(jìn)行刷新,從而看到操作結(jié)果。在MyEclipe的菜單中,有一個(gè)“Source”菜單,在編輯區(qū)的右鍵彈出菜單中,也有“Source”選項(xiàng),它們完成的操作幾乎是一樣的。通過它們可以完成源代碼相關(guān)的操作,在后面的講解中,只以其中的右鍵彈出菜單方式進(jìn)行講解。:在右鍵菜單中選擇“Source”命令也是有快捷鍵的,快捷鍵為“Alt+Shift+S?11Java程序中,注釋是必不可少的一部分。通過注釋能夠使其他程序員很容易的看懂你的程序。在Java程序中有兩種常用的注釋方法,那就是單行注釋和多行注釋。選中要單行注釋的行,在編輯區(qū)的右鍵彈出菜單中,選擇“Source|“ToggleComment”命令,就會(huì)將該行前面加上“//”,從而將當(dāng)前行注釋掉。在該行中,再次選擇“Source”|“ToggleComment”命令,就會(huì)將該行的注釋去掉。BlockComment”命令,就會(huì)為選中的行加上多行注釋。:添加多行注釋的快捷鍵為“Ctrl+Shift”,刪除多行注釋的快捷鍵為|“GenerateElementComment”命令完成,快捷方式為“Alt+Shift+J在調(diào)整代碼中,有兩種操作,一種是調(diào)整行縮進(jìn),另外一種就是調(diào)整格式。我們通oWrd publicclasso publicstaticvoidmain(String[]args) o publicclasso publicstaticvoidmain(String[]{ysm.u.rnln"ol;6 } ?到,“CorrectIndentation”命令的作用就是調(diào)整所有選中行中的縮進(jìn)。 publicclassopublicstaticvoidmain(String[]args) oWorld!!!");

從代碼的變化可以看到,不但縮進(jìn)符合的了規(guī)范,而且換行也符合了規(guī)范。:調(diào)整格式的快捷鍵為“Ctrl+Shift+F導(dǎo)入接口或者類有兩種方式,一種是添加導(dǎo)入,另一種是組織導(dǎo)入。添加導(dǎo)入是導(dǎo)Soue”“Addpor”命|

Ctrl+Shift+MCtrl+Shift+O。在大部分情況下,直接進(jìn)行上述操作都是可以完成相應(yīng)功能的。但是當(dāng)要導(dǎo)入的接口或者類在多個(gè)包中出現(xiàn)時(shí),就要讓程序員進(jìn)行選擇,到底要導(dǎo)入哪一個(gè)接口或者類。例如在oordanDatedate=new2-14?13圖2- Date類存在多個(gè)包下,所以在下面列出所有的DateDate類,例如選擇“java.util.Date”,單擊“Finishimport重寫方發(fā)ava類序時(shí),常要用繼承父接口。如父類和口中有方法,那在當(dāng)前類中就要實(shí)現(xiàn)這些抽象方法。如果父類中具有非抽象方法,在當(dāng)前類中在MyEclipse中,重寫方法是通過一個(gè)命令來完成的。這里我們使oWorld項(xiàng)目中的“service.impl”包下的“UserServiceImpl”程序舉例,首先將它其中的login方法去掉,則代碼變?yōu)椋簆ackageimportpublicclassUserServiceImplimplements{ 在編輯區(qū)的右鍵彈出菜單中,選擇“Source”|“Override/ImplementMethods”命令,將彈出重寫方法界面如圖2-15所示。?圖2- 重寫方因?yàn)椤癠seSrvepl”類實(shí)現(xiàn)了“UseSrve”接口,所以在類中必須實(shí)現(xiàn)ogn方法。在重寫方法界面中,首先將繼承的父類的接口列出來,然后在父類或者接口下列出可以重寫或者實(shí)現(xiàn)的方法。必須實(shí)現(xiàn)的方法默認(rèn)情況下是選中的狀態(tài),ogn和oSrngO按從成方操Urel程為:packageimportpublicclassUserServiceImplimplementsUserServicepublicbooleanlogin(Stringusername,String{//TODOAuto-generatedmethodreturn}publicStringtoString()//TODOAuto-generatedmethodreturn}}GetterSetterJavaWeb項(xiàng)目開發(fā)中,JavaBean是不可缺少的一部分。在標(biāo)準(zhǔn)的JavaBean中,應(yīng)該具有屬性,以及這些屬性的Getter和Setter方法。在本小節(jié)中,就來學(xué)下如何自動(dòng)生成Getter和Setter方法。 oWorld項(xiàng)目中,創(chuàng)建名稱為“po”的包,然后在該包下創(chuàng)建Student學(xué)生類,并 ?15packagepublicclassStudentprivateStringprivateintage;05 private ;}JavaBeanSetterGetter方法完成的,所以通常將屬性設(shè)置為private私有修飾符。在編輯區(qū)的右鍵彈出菜單中,選擇“Source”|“GenerateGettersandSetters”命令,GetterSetter2-16所示。2-16GetterSetter注意:在進(jìn)行“enraeersandeer”命令之前,要指定eer和eer方法插入的位置,必須在類中。如果鼠標(biāo)放在類后,或者其他不能插入方法的位置,enraeeersandeerGetterSetter方法界面中的最上面的文本域中,可以選擇要自動(dòng)生成的方GetterSetterGetterSetter方法進(jìn)行操作的按鈕?!癝electAll”按鈕表示選中所GetterSetter方法生成,這也是最常見的操作?!癉eselect?All”按鈕表示全部不選?!癝electGetters”按鈕表示選擇Getter方法,也就是將所有屬性的Getter方法生產(chǎn)?!癝electSetter”按鈕表示將所有屬性的Setter方法生成。GetterSetter方法界面的下半部分中,“InsertionpointGetter和Setter方法插入的位置,在其中有三個(gè)選項(xiàng),默認(rèn)的是“Cursorposition”,表示在鼠標(biāo)光標(biāo)位置插入,也就是在執(zhí)行“GenerateGettersandSetters”命令之前,鼠標(biāo)的位置。“Firstmothod”選項(xiàng)表示在所有方法前插入,“Lastmothod”選項(xiàng)表示在所有方法之后“Sortby”表示GetterSetter方法的插入順序。其中“Fieldingetter/setterpairs”選項(xiàng)表示先將所有屬性的Getter方法生產(chǎn),再將所有屬性的Setter方法生產(chǎn)?!癆ccessmodifier”表示生成的Getter和Setter方法的修飾符。在理論上講它們可以使四種修飾符中的任意一種,并且還可以選擇final和synchronized兩種非訪問修飾符。但是為了讓的程序使用該程序中的屬性,通常就采用默認(rèn)的public公在這里我們選中所有的屬性,其他選項(xiàng)采用默認(rèn)選擇,單擊“OK”按鈕,從而完成生成Getter和Seter方法的操作。Student學(xué)生類程序變?yōu)椋簆ackagepublicclassStudentprivateStringprivateintprivatebooleanpublicString{ return publicvoidsetName(Stringname)= publicintgetAge()return publicvoidsetAge(intage)this.age= publicbooleanis()return publicvoidset ) = ?17生成方模式是設(shè)置模式中非常重要的一種,本小節(jié)講解的內(nèi)容就要基于模式。在特定情況下,客戶程序不想或者不能直接對象,這時(shí)候就要用到,通過生成一在模式中,應(yīng)該具有三個(gè)角色程序。首先是抽象角色,它是真實(shí)對象和對象在角色程序中,要給出真實(shí)角色類的,并且給出方法,該方法的名稱應(yīng)該和真實(shí)角色程序的方法相同,并在其中調(diào)用真實(shí)角色中的方法。在本節(jié)中就來學(xué)習(xí)如用MEcpe自生成這的法?!啊?public {03publicvoidsayo(); publicclassRealSubjectSubject{ publicvoidsayo() 接下來就是本小節(jié)的重點(diǎn)了,開發(fā)角色,它同樣要實(shí)現(xiàn)Subject接口, publicclassSubject {03privateRealSubjectrealSubject;//真實(shí)角色04 Methods”命令,將會(huì)彈出選擇方法的界面,如圖2-17所示。? 生成方在生成方法界面中,會(huì)按照給出的,查找該類下有哪些方法可以生成代理方法。這里我們選擇“sayo”方法。“Insertionpoint”表示生成方法的插入位置,這里可以選擇所有方法前面,所有方法后面和鼠標(biāo)光盤位置三種,這和生產(chǎn) publicclassSubject {03privateRealSubjectrealSubject; //真實(shí)角色04publicvoidsayo(){ 從代碼中的變化可以看到,自動(dòng)生成了一個(gè)名稱為“sayo”的方法,并在其中使用真實(shí)角色調(diào)用“sayo”方法。到目前方法并沒有開發(fā)完,我們要判斷細(xì)講解。這里我們通過直接判斷的方式,將Subject角色類的代碼變?yōu)椋?publicclassSubject {03privateRealSubjectrealSubject; //真實(shí)角色04publicvoidsayo(){realSubject=new ?19 publicclassTestpublicstaticvoidmain(String[]args) Subject=newSubject();//對 用或者對象,但是仍然運(yùn)行了真實(shí)角色程序中的方法,這就是角色中的方法起需要?jiǎng)?chuàng)建真實(shí)角色對象,而是通過IoC技術(shù)。在方法中,還可以添加其他方法,從而完善原方法,使用它最多的就是SpringAOP技術(shù)。這里我們在后面的學(xué)習(xí)hashCode和equals方法是Object類中的兩個(gè)方法,所以在所有類中都可以重寫這兩個(gè)方法。在程序中,調(diào)用hashCode方法將返回對象的哈希碼值。在Java應(yīng)用程序執(zhí)行期間,在同一對象上多次調(diào)用hashCode方法時(shí),必須一致地返回相同的整數(shù)。equals方法用于判斷對象是否和參數(shù)對象“相等”,這里的相等可以人為指定,例如規(guī)定和都相等的學(xué)生是相等時(shí)。在重寫equals方法時(shí),通常有必要重寫hashCode方法,以hashCode方法的常規(guī)協(xié)定,該協(xié)定相等對象必須具有相等 packagehashcodeequals; publicclassStudent{ String int ()equals()hashCodeequals2-18? 生成hashCode和equals方在生成hashCode和equals方法界面的文本域中,選擇對哪些屬性操作,也就是說當(dāng)哪些屬性相同時(shí),認(rèn)為兩個(gè)對象是相等的。在“Insertionpoint”選項(xiàng)是選擇生成的方法插入的位置,和前面兩小節(jié)中講解是相同的。最后單擊“OK”按鈕,則Student學(xué)生 packagehashcodeequals; publicclassStudent{StringintpublicinthashCode(){ finalintprime=31;intresult=result=prime*result+result=prime*result+((name==null)?0:namereturn publicbooleanequals(Objectobj)if(this== returnif(obj== returnif(getClass()!= //ClassreturnfinalStudentother=(Student)?21if(age!= returnif(name==null) //如果為if(othername!= //而參數(shù)對象不為null則不相return}elseif(!name.equals(other returnreturn 動(dòng)生成了hashCode和equals方法,它們要比程序員自己寫的代碼規(guī)范的。equalshashCodeMyEclipse開發(fā)工具時(shí)是不會(huì)出錯(cuò)的,因?yàn)閷蓚€(gè)方法綁定在一起。如果手動(dòng)重寫時(shí),構(gòu)造函數(shù)是Java程序中非常重要的組成部分,如果沒有人為的定義構(gòu)造函數(shù),系統(tǒng)會(huì)自動(dòng)給出一個(gè)無參構(gòu)造函數(shù)。在MyEclipse中,生成構(gòu)造函數(shù)有兩種方式,一種是使使用屬性生成構(gòu)造函數(shù),是通過使用已有屬性做為構(gòu)造函數(shù)參數(shù)來生成構(gòu)造函數(shù)。consucrSuent個(gè),為: packagehashcodeequals; publicclassStudent{ String int |Fields”命令,從而彈出使用屬性生成構(gòu)造函數(shù)界面,如圖2-19所示。? 在使用屬性生成構(gòu)造函數(shù)的界面中,在上半部分的文本域中,選擇要使用的屬性,在文本域的右邊有四個(gè)按鈕。“SeectAll”表示選擇全部屬性,“DeeectAll示全部不選擇?!癠p”表示向上移動(dòng)屬性,“Down”表示向下移動(dòng)屬性。之所以要移動(dòng)屬性,是因?yàn)樵跇?gòu)造函數(shù)中參數(shù)也是有順序的。當(dāng)前情況下,生成的兩參構(gòu)造函數(shù),第1個(gè)參數(shù)是name,第2個(gè)參數(shù)是age。如果選中“name”屬性,然后單擊“Down”按鈕,則“nae”屬性就會(huì)出現(xiàn)在“age”屬性的下面,則生成的構(gòu)造函數(shù)第1個(gè)參數(shù)是age,第2個(gè)參數(shù)是name。這兩種生成的構(gòu)造函數(shù)是不相同的?!癐nsertionpoint”選項(xiàng)表示構(gòu)造函數(shù)插入的位置,可以是當(dāng)前鼠標(biāo)光標(biāo)位置,也可以是所有方法前或者所有方法后?!癆ccessmodifier”選項(xiàng)表示生成構(gòu)造函數(shù)的修飾“Generaeconstructorcomments”選項(xiàng)表示是否生成構(gòu)造函數(shù)注釋,默認(rèn)是不生成?!癘mitcalltodefaultconstructoruper()”選項(xiàng)表示是否忽略調(diào)用父類無參構(gòu)造函數(shù)的代碼,也就是“super()”。默認(rèn)是不忽略,也就是生成“uper()”代碼。這里我們采用默認(rèn)選擇,單擊“OK”按鈕,從而完成使用屬性生成構(gòu)造函數(shù)的操作,則Student學(xué)生類程序變?yōu)椋?packageconstructor; publicclassStudent{ StringintpublicStudent(Stringname,intage)?23=this.age=}}注意:不管是否生成“super()”代碼,是都會(huì)調(diào)用父類無參構(gòu)造函數(shù)的,除非指定調(diào)用有參構(gòu)造函數(shù)。從這里也可以看到,在生成有參構(gòu)造函數(shù)后,最好再給出無參構(gòu)造函數(shù)。因?yàn)橛袇?gòu)造函數(shù)會(huì)將系統(tǒng)自動(dòng)生成的無參構(gòu)造函數(shù)覆蓋,但是在子類中會(huì)自動(dòng)調(diào)用父類無參構(gòu)造函數(shù),如果沒有無參構(gòu)造函數(shù),程序就會(huì)出錯(cuò)。類中具有3種構(gòu)造函數(shù),那么在子類中就可以選擇生成其中的某幾種。通過這種方式生我們先來開發(fā)一個(gè)類,讓它做為父類,在其中具有和兩個(gè)屬性,并01packageconstructor;02public {String int { (String{ = (Stringname,intage)=this.age= 然后開發(fā)一個(gè)Teacher老師類,讓它繼承 類,并也為Teacher老師類定義了packagepublicclassTeacher{03Stringname; int |Superclass”命令,會(huì)彈出從超類中生成構(gòu)造函數(shù)的界面,如圖2-20所示。? 中三種類型的構(gòu)造函數(shù)列出來,通過選擇,可以生成Teacher類中的構(gòu)造函數(shù)。例如我們選擇全部三種構(gòu)造函數(shù),單擊“OK”按鈕,則Teacher老師類的代碼變?yōu)椋簆ackagepublicclassTeacher StringintpublicTeacher()//TODOAuto-generatedconstructor}publicTeacher(Stringname,intage)super(name,//TODOAuto-generatedconstructor}publicTeacher(Stringname)//TODOAuto-generatedconstructor}}?25注意:我們完全可以在eacher老師類中不定義和屬性,也能生成這三種構(gòu)造函數(shù)。這是因?yàn)檫@兩個(gè)屬性會(huì)從父類中繼承下來,這里我們給出了這兩個(gè)屬性,是因?yàn)榭梢宰寴?gòu)造函數(shù)看的更明白。在Java語言的流程控制語句中,大部分語句都是具有固定格式的。在控制語句中,包括條件語句、循環(huán)語句和異常處理語句等。在MyEclipse中,通過命令操作可以自動(dòng)生成這些語句,從而減輕程序員的操作。在菜單中,選擇“Source”|“SurroundWith”命令,可以看到包圍方式選項(xiàng)。在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith”命JavaifSwitch多條件分支語句。由于Switch語句是比較復(fù)雜的,所以在MyEclipse中并沒有集成自動(dòng)生成該語句令。所以這里說的條件語句包圍就是if條件語句包圍。packagepublicclassIfTestpublicstaticvoidmain(String[]args)System.out.println("if條件語句");} 選中第4行的代碼,在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith”|“3if(ifpackagepublicclassIfTestpublicstaticvoidmain(String[]{ if(condition) System.out.println("自動(dòng)生成if條件語句"); Javafor循環(huán)語句、whiledo-while循環(huán)語forpackagepublicclassForTestpublicstaticvoidmain(String[]args)System.out.println("for循環(huán)語句");} |overarray)”命令,則代碼自動(dòng)變?yōu)椋簆ackagepublicclassForTestpublicstaticvoidmain(String[]{ for(inti=0;i<args.length;i++) System.out.println("自動(dòng)生成for循環(huán)語句");

2for(iwhilepackagepublicclassWhileTestpublicstaticvoidmain(String[]args)System.out.println("while循環(huán)語句");05 loopwithcondition)”命令,則代碼自動(dòng)變?yōu)椋簆ackagepublicclassWhileTestpublicstaticvoidmain(String[]{ while(condition) System.out.println("自動(dòng)生成while循環(huán)語句"); ?27do-whilepackagepublicclassDoWhileTestpublicstaticvoidmain(String[]args)System.out.println("while循環(huán)語句");05 選中其中的第4行,在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith”|“1do(dowhilestatement)”命令,則代碼自動(dòng)變?yōu)椋簆ackagepublicclassDoWhileTestpublicstaticvoidmain(String[]{ do System.out.println("自動(dòng)生成while循環(huán)語句"); }while(condition);07} 然后將第6行的“condition為異常的概念要放在后面講解。在MyEclipse中,有兩種異常處理語句包圍方式,它們trycatchcatch語句中給出異常類型,如果使用簡單異常處理語句,則直接給出Exception。先來開發(fā)一個(gè)類名為“TryCatchTest”的packageimportjavanet.ServerSocket; publicclassTryCatchTest{publicstaticvoidmain(String[]args)ServerSocketsocket=new 中第5行代碼,在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith”|“6try(trycatchpackageimportjavanet.ServerSocket; publicclassTryCatchTest{ publicstaticvoidmain(String[]{ try ServerSocketsocket=new}catch(Exceptione)//TODO:handle}}}發(fā)生的異常,然后使用對異常進(jìn)行處理。仍然選中原“TryCatchTest”類程序中的第5行,在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith”|“Try/catchBlock”命令,則代碼packageimportjava.io.IOException; importjavanet.ServerSocket; publicclassTryCatchTest{ publicstaticvoidmain(String[]{ try ServerSocketsocket=newServerSocket(8888); }catch(IOExceptione){ //TODOAuto-generatedcatch 說明:有些讀者可能認(rèn)為匹配異常處理語句要優(yōu)于簡單異常處理,這是不全面的答案。具體使用哪一種要看實(shí)際的情況。如果僅僅是讓程序能夠運(yùn)行,而且還要在其中加入其它代碼,這時(shí)候就應(yīng)該采用簡單異常處理語句包圍,這樣不用進(jìn)行多cach在多線程的操作中,線程方法和同步塊都是經(jīng)常使用到的,線程方法就是runsynchronized關(guān)鍵字定義,這些都是有固定格式的。在MyEclipse中,也定29packagepublicclassSynchronizedTestpublicstaticvoidmain(String[]args) Wcrne(synchronizedblock)”命令,在上述代碼變?yōu)椋簆ackagepublicclassSynchronizedTestpublicstaticvoidmain(String[]{ synchronized(args) 4arg發(fā)完成。這里我們主要就是看同步塊語句包圍方式的使用,在實(shí)際開發(fā)中,是比較上的an也可以使用命令自動(dòng)將某些功能代碼放到多線程方法中。這里我們?nèi)匀灰栽x中其中的第4行代碼,在編輯區(qū)的右鍵彈出菜單中,選擇“SurroundWith(packagepublicclassSynchronizedTestpublicstaticvoidmain(String[]{ newRunnable()publicvoidrun() 在其中會(huì)自動(dòng)生成一個(gè)多線程內(nèi)部類,在內(nèi)部類中定義run線程運(yùn)行方法,從而將選中的功能代碼放置在其中。這樣就創(chuàng)建了一個(gè)實(shí)現(xiàn)RunnableThreadstart?北風(fēng)網(wǎng)講師作品學(xué)員內(nèi)部交流使第3重構(gòu)是對軟件程序的一種調(diào)整,使用重構(gòu)的目的就是在不改變軟件可察行為的前提下,調(diào)整軟件結(jié)構(gòu),從而降低修改成本。重構(gòu)是軟件工程中非常重要的一個(gè)概念,只講500Mycpse是本重構(gòu)主要通過常用的包資源管理器節(jié)點(diǎn)的方式進(jìn)行操作。在MyEclipse中可以對類名、接口名,甚至是方法名、變量名進(jìn)行重命名操作,而且在使用或者調(diào)用這些名稱的地方都會(huì)隨著改變。這里我們通過類名來講解重命名的操JavaStudentTest packagerefactor; publicclassStudent{03StringintpublicStudent()}publicStudent(Stringname,intage)?=this.age= publicvoid packagerefactor; publicclassTest{publicstaticvoidmain(String[]args)Studentstu=new 接下來我們就對Student學(xué)生類的類名進(jìn)行重命名操作。首先我們來看一下當(dāng)前項(xiàng)目的包資源管理器,如圖3-1所示。3-1該包資源管理器的顯示,可能和讀者的有所不同。在這里只需要單擊節(jié)點(diǎn)前面的加號,就可以展開。例如在程序節(jié)點(diǎn)下可以有多個(gè)類節(jié)點(diǎn),在類節(jié)點(diǎn)下可以有多個(gè)變量節(jié)在進(jìn)行重命名操作時(shí),就在這些節(jié)點(diǎn)上操作。選中Student3-2

?3在重命名類名中,“Newnae”選項(xiàng)是用來填寫重命名后的新類名,這里填寫“Teacher”?!癠pdaereferences”選項(xiàng)表示是否更新,默認(rèn)是選中的狀態(tài),表示將該類的地方同時(shí)重命名?!癠pdatesimilarlynaedvarabesandethods”選項(xiàng)表示是否更新以類似方式指定的變量和方法,默認(rèn)是不選中的狀態(tài)。下面兩個(gè)選項(xiàng)是用來判斷是否更新注釋和非ava程序,通常是不選擇這兩項(xiàng)的。按照上述操作后,可以單擊“Finish”按鈕完成操作,也可以單擊“Next”按鈕進(jìn)入預(yù)覽界面,如圖3-3所示。3-3在重命名預(yù)覽界面中,“Changestobeperformed”欄中會(huì)出現(xiàn)有哪些程序發(fā)生了改?package{publicclassTeacherStringname;intpublicTeacher()}publicTeacher(Stringname,int{=this.age=}publicvoid}}數(shù)也隨著變化。再來看使用Student學(xué)生類的Test類程序代碼的變化:packagerefactor; publicclassTest{publicstaticvoidmain(String[]args)Teacherstu=new 從代碼中可以看到,使用Student類的地方也由“Student”變?yōu)榱恕癟eacher”,這里體現(xiàn)出了重命名操作的強(qiáng)大之處。但是類時(shí)不會(huì)改變的,例如“stu”是不會(huì)變化Windows操作系統(tǒng)中,可以對文件進(jìn)行剪切操作。在文字編輯工具中,也可以對文字等信息進(jìn)行剪切操作。在MyEclipse的重構(gòu)操作中,也有類似的操作,通常將它稱然后選中B包后粘貼,這樣就把這個(gè)Java程序 了一份放到B包中。這是比較簡?5移動(dòng)操作的對象和重命名操作一樣,可以對類、接口、方法等進(jìn)行操作,同樣也會(huì)進(jìn)行相應(yīng)的改變。通常類和接口都會(huì)放在包下,當(dāng)移動(dòng)到其他包中后,則包語句代碼會(huì)自化是簡。小,來方移。StudentTeacher老師類,所以這里我們可以再創(chuàng)建一個(gè)Student學(xué)生類程序,其代碼為:packagepublicclassStudentpublicstaticvoidsay publicstaticvoidmain(Stringargs[]){07 Student.sayo(); 在包資源管理器中,選中“Student”類節(jié)點(diǎn)下的“sayo”方法節(jié)點(diǎn),單擊鼠標(biāo)右鍵,在彈出的右鍵菜單中,選擇“Refacor”|“Move”命令,將彈出移動(dòng)操作界面,如圖3-4所示。 單擊其中的“Browse3-5?3-5在其中輸入要移動(dòng)的類,如果該類出現(xiàn)在多個(gè)包下,還要在下面的文本域中選擇某一個(gè)包下的類。例如這里我們選擇和當(dāng)前Sudent學(xué)生類在同一包(refcor包)下的TecerO一下移動(dòng)操作的預(yù)覽,如圖3-6所示。3-6?7packagepublicclass{03Stringname; intpublicTeacher()}publicTeacher(Stringname,int{ = this.age= publicvoid publicstaticvoidsay 可以看到在Teacher老師類中,多出了一個(gè)“sayo”方法,這是因?yàn)椤皊ayo”方法的移動(dòng)目標(biāo)定為Teacher老師類。再來看一下Student學(xué)生類程序代碼packagepublicclassStudentpublicstaticvoidmain(Stringargs[]){04Teacher.sayo(); 從代碼中可以看到,Student學(xué)生類中的“sayo”方法已經(jīng)被移動(dòng)。在main方Student類調(diào)用的“sayoTeacher老師類進(jìn)行調(diào)用了,該方法的調(diào)用不在Student類中,也是不會(huì)受到影響的,從而不影響功能的實(shí)現(xiàn)。static不是僅僅撤銷當(dāng)前Java程序,而是將重構(gòu)操作中所有改變的操作都撤銷。

和拋出異常等。在?令,就會(huì)進(jìn)入更改方法簽名界面,如圖3-7所示。3-7其中“Accessmodifier”選項(xiàng)表示修飾符,它對應(yīng)的是一個(gè)下拉列表,可以在四種修飾符中選擇?!癛eturntype”選項(xiàng)表示方法的返回類型,“Methodname”選項(xiàng)接下來有兩個(gè)選項(xiàng)卡,分別是“araeers”和“Exceptions”?!癙arameers”選項(xiàng)表示方法的參數(shù),這里可以填寫多個(gè),也可以調(diào)整參數(shù)順序。單擊“Add”按鈕添加一個(gè)參數(shù)后,可以調(diào)整該參數(shù)的類型、名稱和默認(rèn)值,分別由“Type”、“Nae”和“Defaultvalue”對應(yīng)?!癊xceptions”選項(xiàng)表示方法的拋出異常類型,也是可以選擇多個(gè)的。在更改方法簽名界面中,“Methonsignaturepreview”選項(xiàng)表示方法的簡單預(yù)覽。如果想查看詳細(xì)的預(yù)覽,可以單擊“Preview”按鈕,預(yù)覽界面如圖3-8所示。圖3-

?9該預(yù)覽界面是和前面的重構(gòu)預(yù)覽界面非常類似的,變化的程序中,不但Teacher老按鈕,則完成更改方法簽名的操作。看下面Teacher老師類的代碼變化:packagepublicclass{03Stringname; intpublicTeacher()}publicTeacher(Stringname,int{ = this.age= publicvoid publicstaticvoidsayo(String 可以看到,Teacher老師類中的sayo方法已經(jīng)發(fā)生改變,其中多出了一個(gè)字符串類型的名稱為name的參數(shù)。我們再來看Student學(xué)生類程序的變化:packagepublicclassStudentpublicstaticvoidmain(String? 些讀者可能有這樣的疑問,“To”參數(shù)值是什么地方來的呢?它是在更改方法簽名界3項(xiàng)“Dautvaue注意:更改方法簽名時(shí),可能會(huì)造成程序的錯(cuò)誤。例如sayo方法的類內(nèi)部重構(gòu)是指在當(dāng)前操作類類體中進(jìn)行重構(gòu)操作,其中包括抽取、內(nèi)聯(lián)和職能轉(zhuǎn)。在職能轉(zhuǎn)換操作中,包括兩種內(nèi)部類的轉(zhuǎn)換和變量間的轉(zhuǎn)換。在Jaa重用性,也使程序更易讀。在項(xiàng)目中,如果在某一方法中有多個(gè)功能代碼,或者一段代packagepublicclass{03publicvoidfor(int publicvoidfor(int |“ExtractMethod3-9?113-9其中“Methodname”選項(xiàng)用于填寫抽取方法后的方法名,“Accessmodifier”選項(xiàng)用于選擇抽取方法的修飾符?!癉eclarethrownruntimeexceptions”選項(xiàng)表示是否聲明拋出的運(yùn)行時(shí)異常?!癎eneratemethodcomment”選項(xiàng)表示是否生成注釋。“Rece1occurrenceofstatementswithmethod”選項(xiàng)表示將所有的該語句替換成方法,并給出了“Methodsignaurepreview”選項(xiàng)表示簡單預(yù)覽,如果想看更詳細(xì)的代碼預(yù)覽,可以單擊“Prevew”按鈕,讀者可以自己查看,這里就不再給出界面。單擊“OK”按鈕,從而完成抽取方法的操作?!癊xtractMethodTest”程序的代碼將變?yōu)椋簆ackagepublicclass{03publicvoid privatevoidforMethod() for(int publicvoid ?711行定義了一個(gè)名稱為“forMethod”的方法,for循環(huán)放在該方法中。而在原來的方法中for循環(huán)代碼換為了調(diào)用“forMethod”方果被抽取的代碼在非靜態(tài)方法中,則抽取后的方法就是非靜態(tài)方法。這樣就會(huì)產(chǎn)生這樣一個(gè)問題,如果被抽取代碼既出現(xiàn)在靜態(tài)方法中,又出現(xiàn)在非靜態(tài)方法中,抽取得:抽取方法操作的快捷鍵為“Alt|Shift+M,使在上一小節(jié)中,我們學(xué)習(xí)了如何將一段功能代碼抽取成一個(gè)方法,在本小節(jié)中就繼續(xù)來學(xué)習(xí)如何將一個(gè)表達(dá)式抽取成局部變量。如果在一個(gè)程序中,一個(gè)表達(dá)式被使用多次,就可以將該表達(dá)式抽取成一個(gè)局部變量,將使用該表達(dá)式的地方都替換為該局部變packagepublicclass{03publicstaticvoidmain(Stringargs[]){04inti=5;booleanboolean 5行的“i==5”表達(dá)式,在右鍵彈出菜單中,選擇“Refactor”|“ExtractLocalVariable”命令,將彈出抽取局部變量界面,如圖3-10所示。 theselectedexpressionwithreferencestothelocalvariable”選項(xiàng)表示是否將所有出現(xiàn)該表達(dá)式的地方都替換成抽取后的局部變量,默認(rèn)是選中的狀態(tài)?!癉eclarethelocal?13variableas‘final’finalpackagepublicclass{03publicstaticvoidmain(Stringargs[]){04inti=5;booleanb=booleanboolean 從代碼的變化可以看到,將“i==5b變量,將使用該表達(dá)式的地方都替換成了變量b。抽取常量是和抽取局部變量非常類似的,但是它的限制要求。因?yàn)槌A康男揎梥acfal是在類中,以成員的形式出現(xiàn),這也就造成被抽取的表達(dá)式中使用的變量也要是成員變packagepublicclass{03publicstaticfinalint publicstaticvoidmain(Stringargs[]){05 booleanb1=(i==5)&true; boolean Refactor|

?3-11其中“Constantname”選項(xiàng)表示抽取后常量的名稱,在Java名規(guī)范中通常使常量名大寫?!癆ccessmodifier”選項(xiàng)表示抽取后常量的修飾符,可以在四種修飾符中任意選?!癛eceallloccurrencesoftheselectedexpressionwithreferencestotheconstant”選項(xiàng)表示是否將所有出現(xiàn)該表達(dá)式的地方都替換成抽取后的常量,默認(rèn)是選中的狀態(tài)。“Qualifyconstantreferenceswithtypename”選項(xiàng)表示是否使用類型名限定常量。 package publicclass{ publicstaticfinalint privatestaticfinalbooleanBOOLEAN=i==5; publicstaticvoidmain(Stringargs[]){booleanboolean 67行中的“i==5”表達(dá)式替換成了常量,并把過內(nèi)聯(lián)操作,可以使用代碼代替調(diào)用方法或者使用局部變量和常量的地方。這里我們通packagepublicclassInlineTestpublicvoid?15}privatevoidforMethod()for(int}}publicvoid}}MyEclipse菜單中,選擇“Refactor”|“Inline3-12所3-12其中“Allinvocations”選項(xiàng)表示是否內(nèi)聯(lián)所有調(diào)用的地方,這里選擇該選項(xiàng)。然后會(huì)在該選項(xiàng)下出現(xiàn)一個(gè)“Deletemethoddeclaration”選項(xiàng),它表示是否刪除方法,也就是調(diào)用的方法,通常是選中的狀態(tài)?!癘nlytheselectedinvocat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論