方是源
(孝感市湖北工程學(xué)院新技術(shù)學(xué)院,湖北 孝感 432000)
Java語(yǔ)言與C++語(yǔ)言的對(duì)比分析
方是源
(孝感市湖北工程學(xué)院新技術(shù)學(xué)院,湖北 孝感 432000)
計(jì)算機(jī)技術(shù)快速發(fā)展環(huán)境下,計(jì)算機(jī)語(yǔ)言成為相關(guān)領(lǐng)域研究的焦點(diǎn)。如Java語(yǔ)言、C++語(yǔ)言,兩種語(yǔ)言在編程語(yǔ)言優(yōu)化中處于關(guān)鍵性地位,但二者在特征上有一定的差異,這種差異特點(diǎn)成為其各自應(yīng)用于不同領(lǐng)域中的原因。文章將對(duì)Java語(yǔ)言特征與應(yīng)用、C++語(yǔ)言特點(diǎn)與應(yīng)用進(jìn)行分析。
Java語(yǔ)言;C++語(yǔ)言;比較
作為計(jì)算機(jī)編程主要語(yǔ)言,Java語(yǔ)言有面向?qū)ο筇攸c(diǎn),可在解釋型、分布式形式應(yīng)用下多態(tài)支持程序,將C語(yǔ)言中的許多語(yǔ)法特征集于其中。而另外一種語(yǔ)言,C++語(yǔ)言有兼容性強(qiáng)、穩(wěn)定等特點(diǎn),對(duì)于高級(jí)語(yǔ)言結(jié)構(gòu)可支持。兩種語(yǔ)言具體應(yīng)用于編程中,對(duì)系統(tǒng)編程效率的提高可發(fā)揮重要作用。因此,本文對(duì)Java語(yǔ)言的特點(diǎn)與C++語(yǔ)言的對(duì)比分析具有十分重要的意義。
1.1 Java語(yǔ)言特征
Java語(yǔ)言應(yīng)用下,其特征主要表現(xiàn)為:(1)語(yǔ)言類型安全,該語(yǔ)言涉及的變量均為對(duì)象,語(yǔ)言應(yīng)用下可通過(guò)一定的關(guān)聯(lián)性使不同類型對(duì)象保持聯(lián)系,其區(qū)別于采用指針訪問(wèn)對(duì)象的C++語(yǔ)言,主要借助其引用的形式實(shí)現(xiàn)訪問(wèn)目的。由于Java語(yǔ)言應(yīng)用下被引用對(duì)象多處于存貨狀態(tài),所以在管理對(duì)象方面更加專業(yè);(2)平臺(tái)無(wú)關(guān)性,該特征主要表現(xiàn)為Java語(yǔ)言應(yīng)用下,完成class文件編譯后可直接用于平臺(tái)中,平臺(tái)性質(zhì)對(duì)語(yǔ)言的應(yīng)用無(wú)影響。該特征的形成主要?dú)w因于Java虛擬機(jī)的應(yīng)用,負(fù)責(zé)編譯語(yǔ)言字節(jié),在虛擬機(jī)執(zhí)行任務(wù)下,其他平臺(tái)不會(huì)對(duì)程序的運(yùn)行帶來(lái)干擾;(3)垃圾收集,由于Java語(yǔ)言可能出現(xiàn)部分對(duì)象未被引用情況,垃圾收集器將分配與回收這些對(duì)象,解除對(duì)象占用空間。
1.2 Java語(yǔ)言應(yīng)用
Java語(yǔ)言應(yīng)用中,首先表現(xiàn)在Java操作系統(tǒng)結(jié)構(gòu)的應(yīng)用,如進(jìn)程軟隔離技術(shù)、垃圾收集技術(shù)等。其中在隔離技術(shù)方面,Java操作系統(tǒng)地址空間結(jié)構(gòu)單一,這就要求做好各進(jìn)程數(shù)據(jù)隔離,如軟內(nèi)存隔離方式的應(yīng)用。由于JTOC表內(nèi)有靜態(tài)函數(shù)指針、對(duì)象靜態(tài)域值存在,加之對(duì)象、指針間由拓?fù)渚W(wǎng)絡(luò)圖構(gòu)成,所以Java操作系統(tǒng)應(yīng)用下需以該拓?fù)渚W(wǎng)絡(luò)圖為內(nèi)存邊界,合理規(guī)劃各進(jìn)程,進(jìn)行進(jìn)程軟隔離域的構(gòu)建。而在垃圾收集方面,強(qiáng)調(diào)對(duì)系統(tǒng)內(nèi)存回收、分配等進(jìn)行控制,避免垃圾對(duì)系統(tǒng)內(nèi)存產(chǎn)生影響,保證系統(tǒng)性能。其次,從Java技術(shù)實(shí)際應(yīng)用看,具體表現(xiàn)為:(1)移動(dòng)目標(biāo)定位系統(tǒng),如因特網(wǎng)終端、基站、GPS定位服務(wù)器與GPS衛(wèi)星系統(tǒng)等,這些系統(tǒng)均需借助Java技術(shù)進(jìn)行信號(hào)循環(huán);(2)位置數(shù)據(jù)庫(kù)服務(wù),通過(guò)Java技術(shù)的應(yīng)用,使數(shù)據(jù)庫(kù)可進(jìn)行位置信息的存儲(chǔ)、發(fā)送等,且在Java編程下,可為用戶提供請(qǐng)求服務(wù)、查詢位置功能[1]。
2.1 C++語(yǔ)言特點(diǎn)
作為C語(yǔ)言升級(jí)后的語(yǔ)言形式,C++語(yǔ)言相比C語(yǔ)言優(yōu)勢(shì)更加明顯,具體的特征表現(xiàn)為:(1)功能特征,可作為面向?qū)ο笳Z(yǔ)言,編程兼容性較好,且為高級(jí)語(yǔ)言屬性;(2)應(yīng)用范圍,相比C語(yǔ)言,C++語(yǔ)言適用性更強(qiáng),在實(shí)際開(kāi)發(fā)計(jì)算機(jī)軟件中被廣泛應(yīng)用;(3)程序設(shè)計(jì),C++語(yǔ)言除融入C語(yǔ)言特性外,在編程語(yǔ)法方面也有一定優(yōu)勢(shì),可結(jié)合運(yùn)行環(huán)境實(shí)現(xiàn)功能拓展;(4)語(yǔ)言特殊性,可對(duì)接Java語(yǔ)言,滿足面向?qū)ο蟪绦蛟O(shè)計(jì)要求的同時(shí),與類的發(fā)展要求相吻合。
2.2 C++語(yǔ)言構(gòu)成
關(guān)于C++語(yǔ)言,其基礎(chǔ)構(gòu)成較多,如指針、數(shù)組、基本數(shù)據(jù)、表示符以及關(guān)鍵字等。以數(shù)據(jù)類型為例,作為高級(jí)語(yǔ)言構(gòu)成的關(guān)鍵要素,數(shù)據(jù)類型轉(zhuǎn)化關(guān)系、類型多少可作為語(yǔ)言操作難度、語(yǔ)言拓展能力以及語(yǔ)言應(yīng)用領(lǐng)域的重要指標(biāo),而這種數(shù)據(jù)類型形式便以C++語(yǔ)言形式表達(dá),常見(jiàn)的形式包括浮點(diǎn)型、邏輯型、整數(shù)型與字符型等,不同類型形式又可細(xì)化為具體的表現(xiàn)方式,以浮點(diǎn)型為例,有雙精度、單精度兩種浮點(diǎn)。另外,C++語(yǔ)言應(yīng)用中較為常見(jiàn)的也表現(xiàn)在指針型數(shù)據(jù)上,編程中,該類數(shù)據(jù)所呈現(xiàn)的形式為“數(shù)據(jù)類型×指針變量”,指針類型、數(shù)據(jù)類型保持一致。實(shí)際引用中,一般也借助“&”符號(hào),如“數(shù)據(jù)類型&變量名”,可表示C++語(yǔ)言初始值。
2.3 C++語(yǔ)言應(yīng)用
C++語(yǔ)言應(yīng)用中,主要表現(xiàn)在該語(yǔ)言下跨平臺(tái)開(kāi)發(fā)方面。由于C++語(yǔ)言的應(yīng)用需做代碼編譯,這就要求在編譯中進(jìn)行文本編寫策略的制定,制定時(shí)有序?qū)φZ(yǔ)言類型行結(jié)束符考慮,其原因在于平臺(tái)類型不同,行結(jié)束符有一定差異。以Windows系統(tǒng)、DOS系統(tǒng)為例, 或回車為行結(jié)束符,但Unix中以 作為結(jié)束符。假若代碼編譯中以Unix為環(huán)境,編譯結(jié)果將無(wú)法用于Windows系統(tǒng)中。這就要求在代碼編譯中,做好問(wèn)題的限定,如對(duì)teb鍵以4個(gè)空格代替,或?qū)τ赪indows系統(tǒng)源代碼文件,以Unix格式進(jìn)行存儲(chǔ)[2]。
作為雜合性語(yǔ)言,C++語(yǔ)言、Java語(yǔ)言在編輯風(fēng)格上都有多樣化特征,但具體用于開(kāi)發(fā)計(jì)算機(jī)軟件方面,有各自的語(yǔ)言特征表現(xiàn),如系統(tǒng)異??刂茩C(jī)制、指針作用以及單一繼承等方面。
3.1 指針作用
取new創(chuàng)建對(duì)象為例,將C++語(yǔ)言、Java語(yǔ)言引入,都可獲取對(duì)象引用,但需注意的是兩種語(yǔ)言在進(jìn)行對(duì)象創(chuàng)建中也存在明顯的差異。如C++語(yǔ)言創(chuàng)建對(duì)象,要求對(duì)象初始化,且避免在不同位置中進(jìn)行同一個(gè)對(duì)象的定義。相比之下,Java語(yǔ)言創(chuàng)建對(duì)象無(wú)需考慮該問(wèn)題,其可直接消除指針部分需求。同時(shí),從指針作用看,Java語(yǔ)言中,并無(wú)具體的指針作用功能,加之無(wú)全局變量,僅需考慮類即可,所以在對(duì)象引用中通過(guò)傳遞方式便可實(shí)現(xiàn)。比較之下,C++語(yǔ)言中對(duì)指針作用依賴性較強(qiáng),如數(shù)組移動(dòng)方面都要求通過(guò)指針指向?qū)崿F(xiàn)[3]。
3.2 異??刂茩C(jī)制
在系統(tǒng)異??刂茩C(jī)制方面,Java語(yǔ)言、C++語(yǔ)言二者存在一定差異。以編程系統(tǒng)異??刂茷槔琂ava語(yǔ)言應(yīng)用下,主要以基礎(chǔ)類Throwable為異常來(lái)源,需做好來(lái)源分析工作,提供通用接口。但值得注意的是,假若語(yǔ)言應(yīng)用中存在錯(cuò)誤丟棄情況,Java語(yǔ)言無(wú)需進(jìn)行函數(shù)調(diào)用,在代碼編譯中實(shí)現(xiàn)錯(cuò)誤的檢查。對(duì)于C++語(yǔ)言,則要求以函數(shù)調(diào)用完成錯(cuò)誤檢查過(guò)程,相比Java語(yǔ)言的應(yīng)用極為復(fù)雜,在錯(cuò)誤檢查方面較為困難。
3.3 單一繼承
所謂單一繼承,亦可理解為一次編寫運(yùn)行,這對(duì)于編程語(yǔ)言的應(yīng)用要求極高。與C++語(yǔ)言相比,Java語(yǔ)言應(yīng)用下,取EXTENDS關(guān)鍵字作為形式進(jìn)行繼承,并以super關(guān)鍵字調(diào)用。另外,Java語(yǔ)言中,interface關(guān)鍵字被提供,其可起到抽象基礎(chǔ)類等價(jià)物的作用,有助于編程目標(biāo)的實(shí)現(xiàn)[4]。
Java語(yǔ)言、C++語(yǔ)言是當(dāng)前計(jì)算機(jī)軟件開(kāi)發(fā)中的關(guān)鍵性技術(shù)保障。本次研究中可發(fā)現(xiàn),兩種語(yǔ)言在實(shí)際應(yīng)用中都極為廣泛,且有各自的特征,具體比較這些特征,可發(fā)現(xiàn)在指針作用、異??刂茩C(jī)制以及單一繼承方面,Java語(yǔ)言優(yōu)勢(shì)都相對(duì)較為明顯,具體進(jìn)行軟件開(kāi)發(fā)中可根據(jù)實(shí)際情況進(jìn)行選擇。
[1]劉明清.Java語(yǔ)言的特點(diǎn)與C++語(yǔ)言的比較[J].信息技術(shù)與信息化,2015(11):151-153.
[2]袁梟,王炎鑫,宋緒政.Java語(yǔ)言的特點(diǎn)與C++語(yǔ)言的比較研究[J].科技創(chuàng)新與應(yīng)用,2016(28):101.
[3]古麗米熱·買買提.基于計(jì)算機(jī)軟件開(kāi)發(fā)的Java編程語(yǔ)言分析[J].硅谷,2013(16):37,41.
Comparative analysis on characteristics of C++ language and Java language
Fang Shiyuan
(Technology College of Hubei Engineering University, Xiaogan 432000, China)
Under the background of rapid development of computer technology, computer language has become the focus of research in related fi eld. Such as Java language, C++ language, two language is in a key position in the optimization of programming language, but there are some difference in the characteristics of them, this difference has become the cause of their respective applications in different fi elds. The characteristics and application of Java language and C++ language are compared and analyzed in this paper.
Java language; C++ language; comparison
方是源(1997— ),男,湖北黃石,本科;研究方向:計(jì)算機(jī)網(wǎng)絡(luò)安全,計(jì)算機(jī)語(yǔ)言。