<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          JAVA和C++區(qū)別詳解

          作者: 時(shí)間:2011-06-10 來(lái)源:網(wǎng)絡(luò) 收藏

          1)java是解釋性語(yǔ)言,java程序在運(yùn)行時(shí)類加載器從類路經(jīng)中加載相關(guān)的類,然后java虛擬機(jī)讀取該類文件的字節(jié),執(zhí)行相應(yīng)操作.而C++編譯的 時(shí)候?qū)⒊绦蚓幾g成本地機(jī)器碼.一般來(lái)說(shuō)java程序執(zhí)行速度要比C++慢10-30倍.即使采用just-in-time compiling (讀取類文件字節(jié)后,編譯成本地機(jī)器碼)技術(shù),速度也要比C++慢好多.

          本文引用地址:http://www.ex-cimer.com/article/150609.htm

            2)java程序有要從網(wǎng)絡(luò)上加載類字節(jié),然后執(zhí)行,這也是導(dǎo)致java運(yùn)行速度慢的原因.

            3)在程序運(yùn)行過(guò)程中,java虛擬機(jī)要檢測(cè)數(shù)組是否越界,在C++中則不檢測(cè).

            4)java中所有的對(duì)象都創(chuàng)建在堆中,沒有對(duì)象被創(chuàng)建在stack中,而C++有的對(duì)象和變量是創(chuàng)建在stack中的

            5) java在運(yùn)行過(guò)程中檢測(cè)對(duì)象的引用是否為空,如果引用指向都空指針,且執(zhí)行某個(gè)方法時(shí)會(huì)拋出空指針異常

            6)java運(yùn)行時(shí)對(duì)類型檢測(cè),如果類型不正確會(huì)拋出ClassCastException異常.

            7)java的垃圾回收機(jī)制較C++由程序員管理內(nèi)存效率更低.

            8) java中的原始數(shù)據(jù)類型在每個(gè)操作系統(tǒng)平臺(tái)長(zhǎng)度都是相同,而C++這些數(shù)據(jù)類型長(zhǎng)度是隨操作系統(tǒng)的不同而不同,所以java在不同操作系統(tǒng)上執(zhí)行時(shí)有個(gè)轉(zhuǎn)化過(guò)程.

            9)在java中String 是UNICODE.當(dāng)java要操作一個(gè) ASCII string 時(shí),比C++效率上相對(duì)要低一些.

            10)java中采用的是動(dòng)態(tài)鏈接

            以下內(nèi)容摘自《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》附錄

            Java和C++看起來(lái)很類似,但兩者之間的差別要多于粗略地查看這兩種語(yǔ)言時(shí)所認(rèn)為的那樣。我們不會(huì)對(duì)所有的進(jìn)行描述,但為了幫助從C++(或C)向Java過(guò)渡,會(huì)對(duì)兩者的一些相似及不同之處進(jìn)行介紹。

            基本類型

            Java中的基本類型基本上和C及C++中的一樣(int、short、long、float、double和 char),但Java添加了byte和boolean類型。(近期的C++版本中也有了bool類型,對(duì)應(yīng)于Java中的boolean類 型。)Java中沒有名為long double的類型。與C和C++不同,在Java中,用字節(jié)表示的某些特定基本類型值的大小是完全確定的,與實(shí)現(xiàn)無(wú)關(guān)。細(xì)節(jié)請(qǐng)參見《Java程序設(shè)計(jì)與 問(wèn)題解決:基礎(chǔ)篇》的第2章。

            字符串

            與C和C++的某些版本不同,Java中的字符串不是特定類型的字符數(shù)組。在Java中有一個(gè)預(yù)定義的String類 型。(對(duì)String類的討論是從《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》的第2章開始的。)Java的String類與C++近期版本中的string 類有些類似。

             控制流程

            Java中的控制結(jié)構(gòu)(if-else、switch、while、do-while和for)與C和C++一樣。但是, 有一些差別會(huì)影響到對(duì)Java中控制結(jié)構(gòu)的使用。具體來(lái)說(shuō),Java中沒有逗號(hào)運(yùn)算符,Java中的boolean類型既不是一個(gè)數(shù)字類型,也無(wú)法將其值 強(qiáng)制轉(zhuǎn)換為一個(gè)數(shù)字類型,而且賦值運(yùn)算符在Java中比在C和C++中表現(xiàn)得更好一些。

            Java中沒有逗號(hào)運(yùn)算符。但是,Java中的for語(yǔ)句定義為可以使用逗號(hào),就像下列代碼這樣:

            for (n = 1, product = 1; n = 10; n++)

            product = product * n;

            但這個(gè)“逗號(hào)運(yùn)算符”只能在for語(yǔ)句中使用。

            在Java中,boolean類型有兩個(gè)值:true和false,無(wú)法將這兩個(gè)值轉(zhuǎn)換成數(shù)字值,用強(qiáng)制類型轉(zhuǎn)換也不行。

            C和C++中的一個(gè)典型錯(cuò)誤就是用=取代了==,就像下列代碼這樣:

            if ( n = 42 )

            ?

            在C和C++ 中,表達(dá)式n=42會(huì)返回值42,根據(jù)所用的C或C++版本的不同,這個(gè)表達(dá)式可以是或?qū)⒁晦D(zhuǎn)換成一個(gè)布爾值。在Java中,n=42也會(huì)返回值42, 但42不是boolean類型的,它也不會(huì)被轉(zhuǎn)換成boolean類型。因此,在Java中,這種錯(cuò)誤會(huì)引發(fā)一個(gè)編譯器錯(cuò)誤消息。

            相等性測(cè)試

            在Java中測(cè)試一個(gè)類類型對(duì)象的相等性是很麻煩的。對(duì)基本類型的值來(lái)說(shuō),運(yùn)算符==會(huì)如你所愿地對(duì)相等性進(jìn)行測(cè)試。但 是,用==對(duì)兩個(gè)類類型的對(duì)象進(jìn)行比較時(shí),測(cè)試的是對(duì)象是否處于同一個(gè)內(nèi)存單元,而不是它們是否具有相同的數(shù)據(jù)。Java類通常會(huì)定義一個(gè)名為 equals的方法來(lái)測(cè)試兩個(gè)對(duì)象是否是我們直覺意義上的相等。在Java中不能重載==運(yùn)算符(或任何運(yùn)算符)。

            main方法(函數(shù))及其他方法

            在Java中,函數(shù)被稱為方法(method)。main方法(函數(shù))在Java中的功能與在C和C++中一樣。在Java中,main方法頭部通常如下所示。

            public static void main(String[] args)

            在Java中,所有的方法—實(shí)際上,任意類型的所有代碼—都是在類中定義的。

            文件及包含文件

            Java中沒有#inlude指示。Java中確實(shí)有一個(gè)import語(yǔ)句,可以導(dǎo)入一整個(gè)包(庫(kù))以供

            在一個(gè)類(或文件)中使用。

          c++相關(guān)文章:c++教程



          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 詳解 區(qū)別 JAVA

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();