国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

關(guān)于Java與C++的探討

2013-04-29 00:44:03張愛(ài)正
網(wǎng)友世界 2013年5期
關(guān)鍵詞:子類數(shù)據(jù)類型數(shù)組

張愛(ài)正

【摘 要】當(dāng)前大部分高校都設(shè)有JAVA與C++課程課程,其教學(xué)效果的好壞,直接影響到學(xué)生的程序設(shè)計(jì)能力和對(duì)高級(jí)語(yǔ)言知識(shí)的學(xué)習(xí)興趣。Java是從C++基礎(chǔ)之上發(fā)展過(guò)來(lái)的,它們有許多相似之處,學(xué)生在學(xué)習(xí)這兩門語(yǔ)言時(shí)容易走入誤區(qū),而一些教師又盲目教學(xué),因此學(xué)生在學(xué)習(xí)過(guò)程中云山霧水不知所措,在實(shí)際操作中總是出現(xiàn)這樣那樣的程序錯(cuò)誤。在這里有必要把兩者的一些區(qū)別進(jìn)行分析,目的在于培養(yǎng)學(xué)生獨(dú)立編寫軟件的能力和獨(dú)自思考創(chuàng)新的能力,進(jìn)而提高學(xué)生的就業(yè)競(jìng)爭(zhēng)力。文章針對(duì)教學(xué)中發(fā)現(xiàn)的兩者之間幾個(gè)容易混淆的內(nèi)容,對(duì)它們進(jìn)行了簡(jiǎn)單闡述,希望對(duì)大家的學(xué)習(xí)有所幫助。

【關(guān)鍵詞】Java;C++;混淆探討

一、引言

筆者研究很多大學(xué)在第一學(xué)期開設(shè)C++課程,在接下來(lái)的學(xué)期會(huì)接著開設(shè)與JAVA相關(guān)的課程,只是課程名稱不同而已。在學(xué)習(xí)過(guò)程中發(fā)現(xiàn),學(xué)生在學(xué)習(xí)C++基礎(chǔ)上接著學(xué)習(xí)Java課程,并沒(méi)有想像的那樣學(xué)起來(lái)比較容易。許多學(xué)生在使用Java時(shí)會(huì)不自覺(jué)地混入C++的語(yǔ)法,讓很多人都感到頭疼。在這里對(duì)于Java與C++兩者相似但又明顯不同之處作一簡(jiǎn)單闡述,希望能對(duì)學(xué)生的學(xué)習(xí)或是教師的教學(xué)有所幫助。

二、Java與C++不同之處

1.數(shù)據(jù)類型與變量

對(duì)于大部分設(shè)計(jì)語(yǔ)言,數(shù)據(jù)類型與變量都是很重要的基本概念。在C++中數(shù)據(jù)類型除了基本類型外,還有枚舉類型、結(jié)構(gòu)類型、指針類型等。數(shù)據(jù)類型與變量可以是獨(dú)立的,不屬于任何一個(gè)函數(shù)或是一個(gè)類,C++允許將變量定義為全局的。Java是完全面向?qū)ο蟮恼Z(yǔ)言,所有函數(shù)和變量必須是類的一部分。除了基本數(shù)據(jù)類型之外,其余的數(shù)據(jù)類型都作為類處理,包括數(shù)組。對(duì)象將數(shù)據(jù)和方法結(jié)合起來(lái),把它們封裝在類中,這樣每個(gè)對(duì)象都可實(shí)現(xiàn)自己的特點(diǎn)和行為。此外,Java中取消了C++中的結(jié)構(gòu)和聯(lián)合,消除了不必要的麻煩。另外Java中char類型使用國(guó)際通用的16位Unicode字符集,所以能自動(dòng)表達(dá)大多數(shù)國(guó)家的字符。

2.程序結(jié)構(gòu)與main()

在C++中應(yīng)用程序都是由若干個(gè)函數(shù)組成的,但必須有且只有一個(gè)main函數(shù)。而每一個(gè)Java應(yīng)用程序是由若干個(gè)類組成的,但必須有且只有一個(gè)public類,且類名稱必須與程序的文件名完全相同,這個(gè)類稱為主類。每個(gè)類可以定義多個(gè)方法,所有類中必須有一個(gè)main方法,也只能有一個(gè)。在C++應(yīng)用程序中,main函數(shù)的定義語(yǔ)句首部是main,它不屬于任何一個(gè)類,是獨(dú)立的。根據(jù)需要,這個(gè)main函數(shù)定義的首部可以寫成其他形式,如void mian(){},或給mian函數(shù)帶個(gè)參數(shù)。C++應(yīng)用程序從main函數(shù)開始執(zhí)行。這個(gè)main方法的定義首部一般是固定的(只有public與static的位置可以調(diào)換),也就是說(shuō)public、static、void、String[]等關(guān)鍵詞全都要有,且不能錯(cuò),也不能省略參數(shù),要求非常嚴(yán)格。Java解釋器在沒(méi)有生成任何實(shí)例的情況下,以main()方法作為入口來(lái)執(zhí)行程序。

3.數(shù)組

數(shù)組是在程序設(shè)計(jì)中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來(lái)的一種形式。C++與Java在使用數(shù)組時(shí)定義方法與開辟內(nèi)存單元上有本質(zhì)不同。在C++中,無(wú)論是一維數(shù)組還是二維數(shù)組,定義時(shí)要指明大小與類型。例如int m[4],n[2][3];在聲明數(shù)組的同時(shí)也開辟了內(nèi)存空間,且是連續(xù)的空間。但是,在Java中,定義數(shù)組與開辟內(nèi)存空間必須分開處理。在定義數(shù)組時(shí)不能指明大小,例如:int myArray[],m[][];這個(gè)語(yǔ)句只能說(shuō)myArray與m是數(shù)組,myArray是一維數(shù)組,m是二維數(shù)組,但是沒(méi)有大小,因此在內(nèi)存中無(wú)法開辟內(nèi)存空間。如果要開辟內(nèi)存空間,必須使用new運(yùn)算。例如int myArray[]=newint[10];這個(gè)語(yǔ)句的含義是,定義了一個(gè)數(shù)組myArray,在內(nèi)存中開辟了能存放10個(gè)整型數(shù)據(jù)的連續(xù)空間,數(shù)組myArray指向了這個(gè)連續(xù)空間的首地址。變量myArray與10個(gè)連續(xù)單元是不在一起的。

4.關(guān)于指針

Java不再使用指針.指針是C和C++中最靈活,也最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型.由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤,同時(shí)通過(guò)指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后,可以訪問(wèn)一個(gè)C++中的私有成員,從而破壞安全性.而Java對(duì)指針進(jìn)行完全地控制,程序員不能直接進(jìn)行任何指針操作。

5.繼承

關(guān)于繼承Java與C++都能從父類繼承派生出子類,應(yīng)在用上有還是不同之處。首先繼承的語(yǔ)句及訪問(wèn)控制不同。在C++中class son:public class father{}就表示子類son公有繼承父類father。繼承時(shí)的訪問(wèn)控制:public、private、protected,會(huì)改變父類中的成員在子類中的訪問(wèn)屬性。而在Java中繼承是用關(guān)鍵詞extends來(lái)處理的,例如class son extends father{},繼承沒(méi)有訪問(wèn)控制,因此不會(huì)改變從父類繼承過(guò)來(lái)的成員的訪問(wèn)屬性,這樣可以減少很多訪問(wèn)控制上的麻煩。第一關(guān)于多重繼承。C++支持多重繼承,但Java不支持。多重繼承是C++的一個(gè)特征,它允許多父類派生一個(gè)子類。盡管多重繼承功能很強(qiáng),但使用復(fù)雜,而且會(huì)引起許多麻煩,編譯程序?qū)崿F(xiàn)它也很不容易。Java不支持多重繼承,但允許一個(gè)類繼承多個(gè)接口,也允許一個(gè)接口繼承多個(gè)接口,實(shí)現(xiàn)了C++多重繼承的功能,又避免了C++中的多重繼承實(shí)現(xiàn)方式帶來(lái)的諸多不便。第三對(duì)于訪問(wèn)父類構(gòu)造函數(shù)或方法。在C++語(yǔ)言中,在子類的構(gòu)造函數(shù)中是通過(guò)調(diào)用父類的構(gòu)造函數(shù)來(lái)給父類成員變量初始化的。如果在子類中重寫了父類的方法,又想在子類中調(diào)用父類的該方法,則可以使用”::”作用域范圍運(yùn)算符來(lái)處理,即父類名::函數(shù)名。在Java語(yǔ)言中,是通過(guò)super這個(gè)關(guān)鍵詞來(lái)調(diào)用父類的構(gòu)造方法或普通成員方法的。在子類的構(gòu)造方法中必須通過(guò)super()或是super(x)來(lái)調(diào)用父類的構(gòu)造方法,并且這條語(yǔ)句必須出現(xiàn)在子類構(gòu)造方法的第一條位置。在子類方法中,通過(guò)“super.方法”來(lái)訪問(wèn)父類中被重寫過(guò)的方法,通過(guò)“super.成員”變量來(lái)訪問(wèn)父類中的成員變量。

三、結(jié)束語(yǔ)

Java與C++都屬于最近普遍流行的高級(jí)語(yǔ)言,有很多相同的地方。在學(xué)習(xí)和使用過(guò)程中要注意兩者的區(qū)別,以上只是分析了部分區(qū)別,其次還有內(nèi)存管理、多態(tài)、類、函數(shù)沒(méi)有默認(rèn)參數(shù)等方面的區(qū)別。為了在C++基礎(chǔ)上更好地學(xué)好Java,在學(xué)習(xí)過(guò)程中要學(xué)會(huì)比較、歸納與總結(jié),這樣才能更好掌握J(rèn)ava的精華,才能為學(xué)習(xí)Java高級(jí)技術(shù)打下結(jié)實(shí)的基礎(chǔ)。

猜你喜歡
子類數(shù)據(jù)類型數(shù)組
JAVA稀疏矩陣算法
詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計(jì)
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
關(guān)于對(duì)稱共軛點(diǎn)的倒星象函數(shù)某些子類的系數(shù)估計(jì)
尋找勾股數(shù)組的歷程
VB數(shù)組在for循環(huán)中的應(yīng)用
考試周刊(2012年88期)2012-04-29 04:36:47
塊H矩陣新的子類
關(guān)于Java繼承性的探討
平阳县| 平罗县| 南雄市| 金塔县| 同江市| 正镶白旗| 探索| 铜川市| 仙居县| 高台县| 连江县| 邓州市| 旬邑县| 江华| 廊坊市| 开鲁县| 河东区| 靖远县| 略阳县| 甘洛县| 义马市| 夏津县| 高碑店市| 邢台市| 汤阴县| 科技| 米脂县| 娄底市| 大连市| 当雄县| 宁津县| 科技| 仁化县| 涞源县| 郴州市| 勐海县| 左权县| 海林市| 明水县| 库伦旗| 洱源县|