日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c++和java的类转换的区别

發(fā)布時(shí)間:2023/12/20 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++和java的类转换的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://club.topsage.com/thread-265349-1-1.html

Java并不僅僅是C++語(yǔ)言的一個(gè)變種,它們?cè)谀承┍举|(zhì)問(wèn)題上有根本的不同:
  (1)Java比C++程序可靠性更高。有人曾估計(jì)每50行C++程序中至少有一個(gè)BUG。姑且不去討論這個(gè)數(shù)字是否夸張,但是任何一個(gè)C++程序員都不得不承認(rèn)C++語(yǔ)言在提供強(qiáng)大的功能的同時(shí)也提高了程序含BUG的可能性。Java語(yǔ)言通過(guò)改變語(yǔ)言的特性大大提高了程序的可靠性。
  (2)Java語(yǔ)言不需要程序?qū)?nèi)存進(jìn)行分配和回收。Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收 集,Examda提示: 在Java語(yǔ)言中,內(nèi)存的分配和回收都是自動(dòng)進(jìn)行的,程序員無(wú)須考慮內(nèi)存碎片的問(wèn)題。
  (3)Java語(yǔ)言中沒有指針的概念,引入了真正的數(shù)組。不同于C++中利用指針實(shí)現(xiàn)的“偽數(shù)組”,Examda,Java引入了真正的數(shù)組,同時(shí)將 容易造成麻煩的指針從語(yǔ)言中去掉,這將有利于防止在c++程序中常見的因?yàn)閿?shù)組操作越界等指針操作而對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行非法讀寫帶來(lái)的不安全問(wèn)題。
  (4)Java用接口(Interface)技術(shù)取代C++程序中的多繼承性。接口與多繼承有同樣的功能,但是省卻了多繼承在實(shí)現(xiàn)和維護(hù)上的復(fù)雜性。
  Java和C++各有各的優(yōu)勢(shì),無(wú)需爭(zhēng)論那種語(yǔ)言好,哪種語(yǔ)言不好,能夠存在就一定有它的優(yōu)勢(shì),只要你決定了要學(xué)編程就扎實(shí)的學(xué)好,編程語(yǔ)言都是相同的,學(xué)會(huì)一種,其他的學(xué)起來(lái)就很容易了。

?

具體來(lái)說(shuō)有以下幾點(diǎn):

1.指針?
JAVA語(yǔ)言讓編程者無(wú)法找到指針來(lái)直接訪問(wèn)內(nèi)存,并且增添了自動(dòng)的內(nèi)存管理功能,從而有效地防止了c/c++語(yǔ)言中指針操作失誤,如野指針?biāo)斐傻南到y(tǒng)崩潰。但也不是說(shuō)JAVA沒有指針,虛擬機(jī)內(nèi)部還是使用了指針,只是外人不得使用而已。這有利于Java程序的安全。?

2.多重繼承?
c++支持多重繼承,這是c++的一個(gè)特征,它允許多父類派生一個(gè)類。盡管多重繼承功能很強(qiáng),但使用復(fù)雜,而且會(huì)引起許多麻煩,編譯程序?qū)崿F(xiàn)它也很不容易。Java不支持多重繼承,但允許一個(gè)類繼承多個(gè)接口(extends+implement),實(shí)現(xiàn)了c++多重繼承的功能,又避免了c++中的多重繼承實(shí)現(xiàn)方式帶來(lái)的諸多不便。?

3. 數(shù)據(jù)類型及類?
Java是完全面向?qū)ο蟮恼Z(yǔ)言,所有函數(shù)和變量都必須是類的一部分。除了基本數(shù)據(jù)類型之外,其余的都作為類對(duì)象,包括數(shù)組。對(duì)象將數(shù)據(jù)和方法結(jié)合起來(lái),把它們封裝在類中,這樣每個(gè)對(duì)象都可實(shí)現(xiàn)自己的特點(diǎn)和行為。而c++允許將函數(shù)和變量定義為全局的。此外,Java中取消了c/c++中的結(jié)構(gòu)和聯(lián)合,消除了不必要的麻煩。?

4. 自動(dòng)內(nèi)存管理
Java程序中所有的對(duì)象都是用new操作符建立在內(nèi)存堆棧上,這個(gè)操作符類似于c++的new操作符。下面的語(yǔ)句由一個(gè)建立了一個(gè)類Read的對(duì)象,然后調(diào)用該對(duì)象的work方法:

12Read r=new?Read();r.work();

語(yǔ)句Read r=new Read();在堆棧結(jié)構(gòu)上建立了一個(gè)Read的實(shí)例。Java自動(dòng)進(jìn)行無(wú)用內(nèi)存回收操作,不需要程序員進(jìn)行刪除。而c++中必須由程序貝釋放內(nèi)存資源, 增加了程序設(shè)計(jì)者的負(fù)扔。Java中當(dāng)一個(gè)對(duì)象不被再用到時(shí),無(wú)用內(nèi)存回收器將給它加上標(biāo)簽以示刪除。JAVA里無(wú)用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。?

5. 操作符重載?
Java不支持操作符重載。操作符重載被認(rèn)為是c++的突出特征,在Java中雖然類大體上可以實(shí)現(xiàn)這樣的功能,但操作符重載的方便性仍然丟失了不少。Java語(yǔ)言不支持操作符重載是為了保持Java語(yǔ)言盡可能簡(jiǎn)單。

6. 預(yù)處理功能?
Java不支持預(yù)處理功能。c/c++在編譯過(guò)程中都有一個(gè)預(yù)編澤階段,即眾所周知的預(yù)處理器。預(yù)處理器為開發(fā)人員提供了方便,但增加了編譯的復(fù)雜性。JAVA虛擬機(jī)沒有預(yù)處理器,但它提供的引入語(yǔ)句(import)與c++預(yù)處理器的功能類似。?

7. Java不支持缺省函數(shù)參數(shù),而c++支持?
在c中,代碼組織在函數(shù)中,函數(shù)可以訪問(wèn)程序的全局變量。c++增加了類,提供了類算法,該算法是與類相連的函數(shù),c++類方法與Java類方法+分相似,然而,由于c++仍然支持c,所以不能阻止c++開發(fā)人員使用函數(shù),結(jié)果函數(shù)和方法混合使用使得程序比較混亂。?

Java沒有不包含在類中的函數(shù),作為一個(gè)比c++更純的面向?qū)ο蟮恼Z(yǔ)言,Java強(qiáng)迫開發(fā)人員把所有例行程序包括在類中,事實(shí)上,用方法實(shí)現(xiàn)例行程序可激勵(lì)開發(fā)人員更好地組織編碼。?

8. 字符串?
c和c++不支持字符串變量,在c和c++程序中使用Null終止符代表字符串的結(jié)束,在Java中字符串是用類對(duì)象(strinR和stringBuffer)來(lái)實(shí)現(xiàn)的,這些類對(duì)象是Java語(yǔ)言的核心,用類對(duì)象實(shí)現(xiàn)字符串有以下幾個(gè)優(yōu)點(diǎn):?
(1)在整個(gè)系統(tǒng)中建立字符串和訪問(wèn)字符串元素的方法是一致的;?
(2)Java字符串類是作為Java語(yǔ)言的一部分定義的,而不是作為外加的延伸部分;?
(3)Java字符串執(zhí)行運(yùn)行時(shí)檢空,可幫助排除一些運(yùn)行時(shí)發(fā)生的錯(cuò)誤;?
(4)可對(duì)字符串用“+”進(jìn)行連接操作。?

9. goto語(yǔ)句?
“可怕”的goto語(yǔ)句是c和c++的“遺物”,它是該語(yǔ)言技術(shù)上的合法部分,引用goto語(yǔ)句引起了程序結(jié)構(gòu)的混亂,不易理解,goto語(yǔ)句子要用于無(wú) 條件轉(zhuǎn)移子程序和多結(jié)構(gòu)分支技術(shù)。鑒于以廣理由,Java不提供goto語(yǔ)句,它雖然指定goto作為關(guān)鍵字,但不支持它的使用,使程序簡(jiǎn)潔易讀。?

l0. 類型轉(zhuǎn)換?
在c和c++中有時(shí)出現(xiàn)數(shù)據(jù)類型的隱含轉(zhuǎn)換,這就涉及了自動(dòng)強(qiáng)制類型轉(zhuǎn)換問(wèn)題。例如,在c++中可將一浮點(diǎn)值賦予整型變量,并去掉其尾數(shù)。Java不支持c++中的自動(dòng)強(qiáng)制類型轉(zhuǎn)換,如果需要,必須由程序顯式進(jìn)行強(qiáng)制類型轉(zhuǎn)換。?

11. 異常?
JAVA中的異常機(jī)制用于捕獲例外事件,增強(qiáng)系統(tǒng)容錯(cuò)能力

1234567try{//可能產(chǎn)生例外的代碼}catch(exceptionType name){//處理}

?其中exceptionType表示異常類型。而C++則沒有如此方便的機(jī)制。


轉(zhuǎn)載于:https://blog.51cto.com/yangshaofeng/1853127

總結(jié)

以上是生活随笔為你收集整理的c++和java的类转换的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。