日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java類中域和方法設(shè)置中的常見(jiàn)錯(cuò)誤

在Java程序中,Java類是其實(shí)現(xiàn)功能的核心。如果說(shuō)開發(fā)Java應(yīng)用程序,就是一個(gè)類的構(gòu)建與使用的過(guò)程這一點(diǎn)都不為過(guò)??上У氖牵簧俪绦騿T在編寫類的時(shí)候,還是會(huì)犯一些常規(guī)的錯(cuò)誤。筆者就對(duì)此做一個(gè)總結(jié),望各位讀者能夠引起重視。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的眉山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、基本數(shù)據(jù)類型的初始化問(wèn)題。

在Java語(yǔ)言中,跟其他開發(fā)語(yǔ)言一樣,都定義了一些基本的數(shù)據(jù)類型。程序員可以拿來(lái)直接使用,還可以用來(lái)構(gòu)造其他一些復(fù)雜的應(yīng)用程序。不過(guò)在Java中使用這些基本數(shù)據(jù)類型有些不同。在Java類中,這個(gè)基本數(shù)據(jù)類型主要用在兩個(gè)地方,分別為類中的成員或者局部變量。對(duì)于這些基本的數(shù)據(jù)類型,常犯的錯(cuò)誤就是沒(méi)有進(jìn)行初始化。

如果將某些變量是屬于這些基本數(shù)據(jù)類型的,當(dāng)他們作為一個(gè)類的成員使用時(shí),默認(rèn)情況下編譯器會(huì)給其一個(gè)默認(rèn)值。以保證那些是基本類型的成員變量得到初始化,防止產(chǎn)生程序的錯(cuò)誤。但是,這些默認(rèn)的初始值大部分情況下可能都不符合程序員的需要,可能是不準(zhǔn)確的,也可能是不合法的。為此筆者的建議是,開發(fā)人員要養(yǎng)成一個(gè)好習(xí)慣,在定義變量的時(shí)候(用于類成員),就最好明確的對(duì)變量進(jìn)行初始化。另外需要注意的是,跟C++等編程語(yǔ)言相比,Java在這方面有了很不錯(cuò)的改善。如如果開發(fā)人員忘記對(duì)其進(jìn)行初始化,Java至少還會(huì)采用默認(rèn)值對(duì)其進(jìn)行初始化,來(lái)防止程序錯(cuò)誤。但是在C++中,則不會(huì)對(duì)其進(jìn)行自動(dòng)初始化。在這種情況下,由于變量沒(méi)有及時(shí)初始化,而很容易出現(xiàn)程序的崩潰。

基本類型的另外一種用途就是當(dāng)作局部變量來(lái)使用,如在循環(huán)語(yǔ)句中當(dāng)作循環(huán)條件來(lái)使用。此時(shí)跟類成員不同,系統(tǒng)不會(huì)自動(dòng)對(duì)局部變量進(jìn)行初始化。很多程序開發(fā)員會(huì)在這里栽跟頭。因?yàn)樵陬惓蓡T中會(huì)對(duì)其進(jìn)行自動(dòng)初始化,而在局部變量也如此。其實(shí)不然。當(dāng)利用int y 等語(yǔ)句定義了一個(gè)局部變量時(shí),Java跟其他開發(fā)語(yǔ)言一樣,是不會(huì)對(duì)其進(jìn)行自動(dòng)初始化的。開發(fā)人員需要在定義變量時(shí)就對(duì)其進(jìn)行初始化,這是筆者強(qiáng)烈建議的。在Java類中,如果在代碼編譯的時(shí)候,局部變量沒(méi)有被正確的初始化,則系統(tǒng)編譯器就會(huì)返回一個(gè)錯(cuò)誤信息,告訴開發(fā)人員某個(gè)局部變量沒(méi)有被正確的初始化,便以不會(huì)成功。在這方面,Java跟其他語(yǔ)言也有所不同。如在C++中,如果變量沒(méi)有初始化,那么系統(tǒng)只是拋出一個(gè)警告信息,便以仍然可以正常進(jìn)行。這無(wú)疑后以后程序運(yùn)行埋下了一顆定時(shí)炸彈。為此筆者認(rèn)為,Java這種做法是比較安全的。當(dāng)局部變量沒(méi)有初始化時(shí),系統(tǒng)會(huì)拒絕進(jìn)行編譯,而不是簡(jiǎn)單的只是一個(gè)警告信息。有時(shí)候,警告信息并不能夠引起程序開發(fā)人員的重視。

總之,基本數(shù)據(jù)類型無(wú)論是作為類成員變量來(lái)使用,還是作為局部變量來(lái)使用,程序開發(fā)人員都要養(yǎng)成一個(gè)好習(xí)慣,即在變量定義的時(shí)候馬上進(jìn)行初始化。即使不知道還賦予什么值合適,那么最好也是手工的賦予其一個(gè)默認(rèn)值。等到變量使用時(shí),在根據(jù)實(shí)際情況給其重新賦值。無(wú)論什么情況下,變量一定以就要對(duì)其進(jìn)行初始化。

二、給方法設(shè)置合適的返回類型。

在Java類中,除了成員變量,最重要的就是方法了。而在方法中,比較容易出現(xiàn)問(wèn)題的那就是其返回類型的問(wèn)題。這里指的返回類型是指調(diào)用方法后返回的數(shù)據(jù)類型。也就是說(shuō),在方法內(nèi)部執(zhí)行一系列的運(yùn)算之后,要返回給外部的值。開發(fā)人員要根據(jù)這個(gè)值來(lái)設(shè)置方法的返回類型。如現(xiàn)在有一個(gè)方法age()。主要的用途就是根據(jù)身份證號(hào)碼來(lái)推算出這個(gè)人的年齡。此時(shí)在調(diào)用這個(gè)方法時(shí),可利用如下的語(yǔ)句 int age1=getage.age()。

那么在定義這個(gè)方法的時(shí)候,有哪些Java常見(jiàn)錯(cuò)誤需要注意呢?

首先在定義方法的時(shí)候,需要注意其數(shù)據(jù)的范圍類型。并不是說(shuō)所有的方法都會(huì)返回結(jié)果。如果某個(gè)方法返回結(jié)果的話,并不是說(shuō)不用指定返回的數(shù)據(jù)類型。仍然需要指定,只是利用關(guān)鍵字void,而不是采用int等基本數(shù)據(jù)類型。如假設(shè)上面這個(gè)age方法沒(méi)有返回任何的數(shù)據(jù)類型,則要按照如下的方法來(lái)定義,即void age()。注意前面的關(guān)鍵字void表示這個(gè)方法沒(méi)有返回值。如果有返回值的話,那么就要在方法開頭指明返回值的類型。如age這個(gè)方法,如果其返回的是年齡整數(shù)型的數(shù)據(jù),則就需要如下定義int age()。最好的情況是,返回的數(shù)據(jù)類型跟方法中指定的數(shù)據(jù)類型一致。,但是在實(shí)際工作中,沒(méi)有定義的這么嚴(yán)格。一般來(lái)說(shuō),這個(gè)數(shù)據(jù)類型只要兼容機(jī)即可。如雖然返回的數(shù)據(jù)是整數(shù),但是在方法處定義的可以是浮點(diǎn)數(shù)的數(shù)據(jù)類型。因?yàn)樗麄兪羌嫒莸?。但是反過(guò)來(lái)則不行。如返回的值為浮點(diǎn)數(shù),而在方法中定義的卻是整數(shù)型的返回值。此時(shí)系統(tǒng)就會(huì)認(rèn)為是錯(cuò)誤的。因?yàn)樵谡麛?shù)型的變量中無(wú)法存儲(chǔ)浮點(diǎn)數(shù)的數(shù)據(jù)。

其次需要注意的是在調(diào)用這個(gè)方法時(shí),需要將方法的返回值賦值給某個(gè)變量。為此,這個(gè)變量的數(shù)據(jù)類型必須同這個(gè)方法返回值的數(shù)據(jù)類型兼容。int age1=getage.age(),如在這個(gè)語(yǔ)句中,如果方法age返回的是整數(shù)型的數(shù)據(jù),就說(shuō)明是可行的。但假設(shè)這個(gè)方法返回的不是整數(shù)型的數(shù)據(jù),而是浮點(diǎn)數(shù)的數(shù)據(jù)類型,那么就會(huì)發(fā)生數(shù)據(jù)類型不兼容的情況。所以在將某個(gè)方法的返回值賦值給變量時(shí),一定需要注意這個(gè)方法的返回值到底是什么。如果這個(gè)方法是程序員自己編寫的,那么一般不會(huì)出現(xiàn)問(wèn)題。自己編寫的方法,應(yīng)該清楚其會(huì)返回什么樣的值?,F(xiàn)在的問(wèn)題是,如果這個(gè)方法不是程序員自己開發(fā)的呢?在一些大型的應(yīng)用程序開發(fā)中,往往需要多個(gè)程序員合作才能夠完成一個(gè)項(xiàng)目。此時(shí)程序員就需要引用其他程序開發(fā)人員開發(fā)的類以及類中的方法。有時(shí)候程序開發(fā)人員還會(huì)從網(wǎng)上下載類直接拿來(lái)使用。無(wú)論是哪一種方式,都會(huì)涉及到這個(gè)數(shù)據(jù)類型的問(wèn)題。為此如果是程序員自己開發(fā)的類供別人使用時(shí),那么最好能夠在類或者方法的說(shuō)明中,將這個(gè)方法會(huì)返回的數(shù)據(jù)類型寫清楚,并且要確保準(zhǔn)確。只有如此,程序員才能夠在引用某個(gè)方法時(shí)為其設(shè)置合適的數(shù)據(jù)類型,避免因?yàn)閿?shù)據(jù)類型不一致而導(dǎo)致應(yīng)用程序編譯或者運(yùn)行錯(cuò)誤。

三、參數(shù)列表的個(gè)數(shù)與數(shù)據(jù)類型

在定義方法時(shí),往往需要外部參入一些參數(shù)才能夠運(yùn)行。如在根據(jù)身份證號(hào)碼來(lái)判斷年齡的方法中,至少需要將身份證號(hào)碼這個(gè)參數(shù)傳遞放方法對(duì)內(nèi)部中去。有時(shí)候可能還不止一個(gè)參數(shù)。如由于身份證號(hào)碼新版與舊版是不同的。為此同時(shí)需要將身份證號(hào)碼的版本傳遞到方法里面去。在這個(gè)傳遞的過(guò)程中,主要需要注意的就是參數(shù)的個(gè)數(shù)與數(shù)據(jù)類型。

如果外部需要傳入多個(gè)參數(shù)到方法內(nèi)部的話,那么在定義方法時(shí)就需要設(shè)置這么多的參數(shù),傳入的參數(shù)與參數(shù)列表中的參數(shù)必須一一對(duì)應(yīng)。如上面這個(gè)案例中需要傳入身份證號(hào)碼與身份證的版本,那么在定義這個(gè)方法的時(shí)候就需要設(shè)置兩個(gè)參數(shù)。

其次在Java常見(jiàn)錯(cuò)誤中,要注意數(shù)據(jù)類型。在參數(shù)列表中,也需要為參數(shù)指定其采用的數(shù)據(jù)類型。這個(gè)數(shù)據(jù)類型必須與實(shí)際傳入的數(shù)據(jù)類型一致或者兼容。為了保證這一點(diǎn),往往需要在傳入這個(gè)參數(shù)之間進(jìn)行控制。如需要利用一個(gè)If語(yǔ)句來(lái)判斷傳入的參數(shù)是否符合要求。如果符合的話,調(diào)用這個(gè)方法。相反不符合的話,則會(huì) 拋出一個(gè)異常,并將錯(cuò)誤信息返回給用戶。在大部分情況下,如果方法涉及到參數(shù),利用if語(yǔ)句來(lái)進(jìn)行判斷是比較合理的。另外,也可以事先利用數(shù)據(jù)類型轉(zhuǎn)換函數(shù),強(qiáng)制將傳輸參數(shù)的數(shù)據(jù)類型轉(zhuǎn)換成參數(shù)列表所定義的數(shù)據(jù)類型。不過(guò)需要注意的是,在轉(zhuǎn)換過(guò)程中可能會(huì)造成一些數(shù)據(jù)的誤差。開發(fā)人員需要預(yù)先評(píng)估一下能否接受這誤差。如果可以接收的話,則可以采用這種方法來(lái)強(qiáng)制數(shù)據(jù)的兼容性。如果不行的話,則就需要給用戶返回錯(cuò)誤信息,讓其提供一個(gè)合法的參數(shù)。

另外在窗口中進(jìn)行類似的控制也是不錯(cuò)的選擇。如可以通過(guò)必須填寫文本框這種機(jī)制來(lái)控制用戶必須傳入多少個(gè)參數(shù)?;蛘咴谖谋究蛑胁捎昧斜砘蛘呷掌谛偷倪x擇框等等來(lái)規(guī)范用戶傳入?yún)?shù)的數(shù)據(jù)類型??傊?,這個(gè)方法傳入?yún)?shù)的控制,無(wú)論是數(shù)量上還是數(shù)據(jù)類型上,在越靠近用戶的那邊控制效果越好。如此用戶可以在最短的時(shí)間內(nèi)發(fā)現(xiàn)問(wèn)題,而不會(huì)等到程序執(zhí)行錯(cuò)誤了才知道自己提供的參數(shù)有問(wèn)題。

【編輯推薦】

  1. Java類體中的this和super的用法
  2. Java通過(guò)JNI調(diào)用C語(yǔ)言的方法
  3. Java連接MySQL中文亂碼處理
  4. 淺析Java虛擬機(jī)的工作流程
  5. 在Java應(yīng)用程序中使用Jfreechart配置

新聞名稱:Java類中域和方法設(shè)置中的常見(jiàn)錯(cuò)誤
本文網(wǎng)址:http://www.dlmjj.cn/article/cddhejg.html