時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)
在java程序中,類是其實現(xiàn)功能的核心。如果說開發(fā)Java應(yīng)用程序,就是一個類的構(gòu)建與使用的過程這一點都不為過?上У氖,不少程序員在編寫類的時候,還是會犯一些常規(guī)的錯誤。筆者就對此做一個總結(jié),望各位讀者能夠引起重視。
一、基本數(shù)據(jù)類型的初始化問題。
在Java語言中,跟其他開發(fā)語言一樣,都定義了一些基本的數(shù)據(jù)類型。程序員可以拿來直接使用,還可以用來構(gòu)造其他一些復(fù)雜的應(yīng)用程序。不過在Java中使用這些基本數(shù)據(jù)類型有些不同。在Java語言中,這個基本數(shù)據(jù)類型主要用在兩個地方,分別為類中的成員或者局部變量。對于這些基本的數(shù)據(jù)類型,常犯的錯誤就是沒有進行初始化。
如果將某些變量是屬于這些基本數(shù)據(jù)類型的,當他們作為一個類的成員使用時,默認情況下編譯器會給其一個默認值。以保證那些是基本類型的成員變量得到初始化,防止產(chǎn)生程序的錯誤。但是,這些默認的初始值大部分情況下可能都不符合程序員的需要,可能是不準確的,也可能是不合法的。為此筆者的建議是,開發(fā)人員要養(yǎng)成一個好習慣,在定義變量的時候(用于類成員),就最好明確的對變量進行初始化。另外需要注意的是,跟C++等編程語言相比,Java在這方面有了很不錯的改善。如如果開發(fā)人員忘記對其進行初始化,Java至少還會采用默認值對其進行初始化,來防止程序錯誤。但是在C++中,則不會對其進行自動初始化。在這種情況下,由于變量沒有及時初始化,而很容易出現(xiàn)程序的崩潰。
基本類型的另外一種用途就是當作局部變量來使用,如在循環(huán)語句中當作循環(huán)條件來使用。此時跟類成員不同,系統(tǒng)不會自動對局部變量進行初始化。很多程序開發(fā)員會在這里栽跟頭。因為在類成員中會對其進行自動初始化,而在局部變量也如此。其實不然。當利用int y 等語句定義了一個局部變量時,Java跟其他開發(fā)語言一樣,是不會對其進行自動初始化的。開發(fā)人員需要在定義變量時就對其進行初始化,這是筆者強烈建議的。如果在代碼編譯的時候,局部變量沒有被正確的初始化,則系統(tǒng)編譯器就會返回一個錯誤信息,告訴開發(fā)人員某個局部變量沒有被正確的初始化,便以不會成功。在這方面,Java跟其他語言也有所不同。如在C++中,如果變量沒有初始化,那么系統(tǒng)只是拋出一個警告信息,便以仍然可以正常進行。這無疑后以后程序運行埋下了一顆定時炸彈。為此筆者認為,Java這種做法是比較安全的。當局部變量沒有初始化時,系統(tǒng)會拒絕進行編譯,而不是簡單的只是一個警告信息。有時候,警告信息并不能夠引起程序開發(fā)人員的重視。
總之,基本數(shù)據(jù)類型無論是作為類成員變量來使用,還是作為局部變量來使用,程序開發(fā)人員都要養(yǎng)成一個好習慣,即在變量定義的時候馬上進行初始化。即使不知道還賦予什么值合適,那么最好也是手工的賦予其一個默認值。等到變量使用時,在根據(jù)實際情況給其重新賦值。無論什么情況下,變量一定以就要對其進行初始化。
二、給方法設(shè)置合適的返回類型。
在Java類中,除了成員變量,最重要的就是方法了。而在方法中,比較容易出現(xiàn)問題的那就是其返回類型的問題。這里指的返回類型是指調(diào)用方法后返回的數(shù)據(jù)類型。也就是說,在方法內(nèi)部執(zhí)行一系列的運算之后,要返回給外部的值。開發(fā)人員要根據(jù)這個值來設(shè)置方法的返回類型。如現(xiàn)在有一個方法age()。主要的用途就是根據(jù)身份證號碼來推算出這個人的年齡。此時在調(diào)用這個方法時,可利用如下的語句 int age1=getage.age()。
那么在定義這個方法的時候,需要注意哪些內(nèi)容呢?
首先在定義方法的時候,需要注意其數(shù)據(jù)的范圍類型。并不是說所有的方法都會返回結(jié)果。如果某個方法返回結(jié)果的話,并不是說不用指定返回的數(shù)據(jù)類型。仍然需要指定,只是利用關(guān)鍵字void,而不是采用int等基本數(shù)據(jù)類型。如假設(shè)上面這個age方法沒有返回任何的數(shù)據(jù)類型,則要按照如下的方法來定義,即void age()。注意前面的關(guān)鍵字void表示這個方法沒有返回值。如果有返回值的話,那么就要在方法開頭指明返回值的類型。如age這個方法,如果其返回的是年齡整數(shù)型的數(shù)據(jù),則就需要如下定義int age()。最好的情況是,返回的數(shù)據(jù)類型跟方法中指定的數(shù)據(jù)類型一致。,但是在實際工作中,沒有定義的這么嚴格。一般來說,這個數(shù)據(jù)類型只要兼容機即可。如雖然返回的數(shù)據(jù)是整數(shù),但是在方法處定義的可以是浮點數(shù)的數(shù)據(jù)類型。因為他們是兼容的。但是反過來則不行。如返回的值為浮點數(shù),而在方法中定義的卻是整數(shù)型的返回值。此時系統(tǒng)就會認為是錯誤的。因為在整數(shù)型的變量中無法存儲浮點數(shù)的數(shù)據(jù)。
其次需要注意的是在調(diào)用這個方法時,需要將方法的返回值賦值給某個變量。為此,這個變量的數(shù)據(jù)類型必須同這個方法返回值的數(shù)據(jù)類型兼容。int age1=getage.age(),如在這個語句中,如果方法age返回的是整數(shù)型的數(shù)據(jù),就說明是可行的。但假設(shè)這個方法返回的不是整數(shù)型的數(shù)據(jù),而是浮點數(shù)的數(shù)據(jù)類型,那么就會發(fā)生數(shù)據(jù)類型不兼容的情況。所以在將某個方法的返回值賦值給變量時,一定需要注意這個方法的返回值到底是什么。如果這個方法是程序員自己編寫的,那么一般不會出現(xiàn)問題。自己編寫的方法,應(yīng)該清楚其會返回什么樣的值,F(xiàn)在的問題是,如果這個方法不是程序員自己開發(fā)的呢?在一些大型的應(yīng)用程序開發(fā)中,往往需要多個程序員合作才能夠完成一個項目。此時程序員就需要引用其他程序開發(fā)人員開發(fā)的類以及類中的方法。有時候程序開發(fā)人員還會從網(wǎng)上下載類直接拿來使用。無論是哪一種方式,都會涉及到這個數(shù)據(jù)類型的問題。為此如果是程序員自己開發(fā)的類供別人使用時,那么最好能夠在類或者方法的說明中,將這個方法會返回的數(shù)據(jù)類型寫清楚,并且要確保準確。只有如此,程序員才能夠在引用某個方法時為其設(shè)置合適的數(shù)據(jù)類型,避免因為數(shù)據(jù)類型不一致而導致應(yīng)用程序編譯或者運行錯誤。
三、參數(shù)列表的個數(shù)與數(shù)據(jù)類型。
在定義方法時,往往需要外部參入一些參數(shù)才能夠運行。如在根據(jù)身份證號碼來判斷年齡的方法中,至少需要將身份證號碼這個參數(shù)傳遞放方法對內(nèi)部中去。有時候可能還不止一個參數(shù)。如由于身份證號碼新版與舊版是不同的。為此同時需要將身份證號碼的版本傳遞到方法里面去。在這個傳遞的過程中,主要需要注意的就是參數(shù)的個數(shù)與數(shù)據(jù)類型。
如果外部需要傳入多個參數(shù)到方法內(nèi)部的話,那么在定義方法時就需要設(shè)置這么多的參數(shù),傳入的參數(shù)與參數(shù)列表中的參數(shù)必須一一對應(yīng)。如上面這個案例中需要傳入身份證號碼與身份證的版本,那么在定義這個方法的時候就需要設(shè)置兩個參數(shù)。
其次需要注意數(shù)據(jù)類型。在參數(shù)列表中,也需要為參數(shù)指定其采用的數(shù)據(jù)類型。這個數(shù)據(jù)類型必須與實際傳入的數(shù)據(jù)類型一致或者兼容。為了保證這一點,往往需要在傳入這個參數(shù)之間進行控制。如需要利用一個If語句來判斷傳入的參數(shù)是否符合要求。如果符合的話,調(diào)用這個方法。相反不符合的話,則會 拋出一個異常,并將錯誤信息返回給用戶。在大部分情況下,如果方法涉及到參數(shù),利用if語句來進行判斷是比較合理的。另外,也可以事先利用數(shù)據(jù)類型轉(zhuǎn)換函數(shù),強制將傳輸參數(shù)的數(shù)據(jù)類型轉(zhuǎn)換成參數(shù)列表所定義的數(shù)據(jù)類型。不過需要注意的是,在轉(zhuǎn)換過程中可能會造成一些數(shù)據(jù)的誤差。開發(fā)人員需要預(yù)先評估一下能否接受這誤差。如果可以接收的話,則可以采用這種方法來強制數(shù)據(jù)的兼容性。如果不行的話,則就需要給用戶返回錯誤信息,讓其提供一個合法的參數(shù)。
另外在窗口中進行類似的控制也是不錯的選擇。如可以通過必須填寫文本框這種機制來控制用戶必須傳入多少個參數(shù);蛘咴谖谋究蛑胁捎昧斜砘蛘呷掌谛偷倪x擇框等等來規(guī)范用戶傳入?yún)?shù)的數(shù)據(jù)類型。總之,這個方法傳入?yún)?shù)的控制,無論是數(shù)量上還是數(shù)據(jù)類型上,在越靠近用戶的那邊控制效果越好。如此用戶可以在最短的時間內(nèi)發(fā)現(xiàn)問題,而不會等到程序執(zhí)行錯誤了才知道自己提供的參數(shù)有問題。
關(guān)鍵詞標簽:Java
相關(guān)閱讀
熱門文章 eclipse中如何設(shè)置字體大小_eclipse字體大小
人氣排行 JS驗證日期格式是否正確Java中3DES加密解密調(diào)用示例Java技術(shù)-J2EE開發(fā)日記-MyEclipse快捷鍵與插件大全用Java刪除文件夾里的所有文件JavaScript基本語法-常量和變量C#中的空值的判斷JAVA實現(xiàn)屏幕抓圖 遠程桌面控制100多個很有用的JavaScript函數(shù)以及基礎(chǔ)寫法匯總