太倉(cāng)Java培訓(xùn)中心、面授學(xué)習(xí)開課、高薪就業(yè)路
太倉(cāng)市城廂鎮(zhèn)人民南路95號(hào)華旭大廈9樓
太倉(cāng)市城廂鎮(zhèn)人民南路95號(hào)華旭大廈9樓
太倉(cāng)市城廂鎮(zhèn)人民南路95號(hào)華旭大廈9樓
太倉(cāng)Java培訓(xùn)學(xué)習(xí),高端編程推薦就業(yè)!
熟悉C語言和C++語言的讀者一定想搞清楚這個(gè)問題,實(shí)際上,Java確實(shí)是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發(fā)展和衍生的產(chǎn)物。比如Java語言的變量聲明,操作符形式,參數(shù)傳遞,流程控制等方面和C語言、C++語言完全相同。盡管如此,Java和C語言,C++語言又有許多差別。
在B/S開發(fā)方面,Java要遠(yuǎn)遠(yuǎn)優(yōu)于C++。
折疊優(yōu)劣勢(shì)
優(yōu)勢(shì):Java適合團(tuán)隊(duì)開發(fā),軟件工程可以相對(duì)做到規(guī)范。由于Java語言本身的極其嚴(yán)格語法的??特點(diǎn),Java語言無法寫出結(jié)構(gòu)混亂的程序。這將強(qiáng)迫程序員的代碼軟件結(jié)構(gòu)的規(guī)范性。這是一個(gè)很難比擬的優(yōu)勢(shì)。
劣勢(shì):J2EE的架構(gòu)很完美,版軟件可以做滿意,但是很不適合互聯(lián)網(wǎng)模式的持續(xù)不斷修改??;ヂ?lián)網(wǎng)軟件工程管理上的不足,持續(xù)的修修補(bǔ)補(bǔ)導(dǎo)致架構(gòu)的破壞。
主要表如下幾個(gè)方面:Java中對(duì)內(nèi)存的分配是動(dòng)態(tài)的,它采用面向?qū)ο蟮臋C(jī)制,采用運(yùn)算符new為每個(gè)對(duì)象分配內(nèi)存空間,而且,實(shí)際內(nèi)存還會(huì)隨程序運(yùn)行情況而改變。程序運(yùn)行中 Java系統(tǒng)自動(dòng)對(duì)內(nèi)存進(jìn)行掃描,對(duì)長(zhǎng)期不用的空間作為”垃圾”進(jìn)行收集,使得系統(tǒng)資源得到更充分地利用.按照這種機(jī)制,程序員不必關(guān)注內(nèi)存管理問題,這使Java程序的編寫變得簡(jiǎn)單明了,并且避免了由于內(nèi)存管理方面的差錯(cuò)而導(dǎo)致系統(tǒng)出問題。而C語言通過malloc()和free()這兩個(gè)庫(kù)函數(shù)來分別實(shí)現(xiàn)分配內(nèi)存和釋放內(nèi)存空間的,C++語言中則通過運(yùn)算符new和delete來分配和釋放內(nèi)存。在C和C++這種機(jī)制中,程序員必須非常仔細(xì)地處理內(nèi)存的使用問題。一方面,如果對(duì)己釋放的內(nèi)存再作釋放或者對(duì)未曾分配的內(nèi)存作釋放,都會(huì)造成死機(jī);而另一方面,如果對(duì)長(zhǎng)期不用的或不再使用的內(nèi)存不釋放,則會(huì)浪費(fèi)系統(tǒng)資源,甚至因此造成資源枯竭。
??? Java不在所有類之外定義全局變量,而是在某個(gè)類中定義一種公用靜態(tài)的變量來完成全局變量的功能。
??? Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯(cuò)的功能。
??? Java不支持頭文件,而C語言和C++語言中都用頭文件來聲明類的原型、全局變量、庫(kù)函數(shù)等,這種采用頭文件的結(jié)構(gòu)使得系統(tǒng)的運(yùn)行維護(hù)相當(dāng)繁雜。
Java不支持宏定義。Java只能使用關(guān)鍵字final來定義常量。
??? 類型轉(zhuǎn)換不同。在C語言和C++語言中,可通過指針進(jìn)行任意的類型轉(zhuǎn)換,常常帶來不性,而在Java中,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查,以防止不的轉(zhuǎn)換。
結(jié)構(gòu)和聯(lián)合的處理。Java中根本就不允許類似C語言的結(jié)構(gòu)體(struct)和聯(lián)合體(union)包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類里面。
Java對(duì)每種數(shù)據(jù)類型都分配固定長(zhǎng)度。比如,在Java中,int類型總是32位的,而在C語言和C++語言中,對(duì)于不同的平臺(tái),同一個(gè)數(shù)據(jù)類型分配不同的字節(jié)數(shù),同樣是int類型,在PC機(jī)中為二字節(jié)即16位,而在VAX-11中,則為32位。這使得C語言造成不可移植性,而Java則具有跨平臺(tái)性(平臺(tái)無關(guān)性)。
??? Java不再使用指針。指針是C語言和C++語言中較靈活,也較容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤,同時(shí)通過指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后,可以訪問一個(gè)C++中的私有成員,從而破壞性。而Java用“引用”的方式,對(duì)指針進(jìn)行完全地控制,程序員不能直接進(jìn)行任何指針操作。
避免平臺(tái)依賴。Java語言編寫的類庫(kù)可以在其它平臺(tái)的Java應(yīng)用程序中使用,而不像C++語言必須運(yùn)行于單一平臺(tái)。