新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > JAVA和C++區別詳解

        JAVA和C++區別詳解

        作者: 時間:2011-06-10 來源:網絡 收藏

        1)java是解釋性語言,java程序在運行時類加載器從類路經中加載相關的類,然后java虛擬機讀取該類文件的字節,執行相應操作.而C++編譯的 時候將程序編譯成本地機器碼.一般來說java程序執行速度要比C++慢10-30倍.即使采用just-in-time compiling (讀取類文件字節后,編譯成本地機器碼)技術,速度也要比C++慢好多.

        本文引用地址:http://www.104case.com/article/150609.htm

          2)java程序有要從網絡上加載類字節,然后執行,這也是導致java運行速度慢的原因.

          3)在程序運行過程中,java虛擬機要檢測數組是否越界,在C++中則不檢測.

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

          5) java在運行過程中檢測對象的引用是否為空,如果引用指向都空指針,且執行某個方法時會拋出空指針異常

          6)java運行時對類型檢測,如果類型不正確會拋出ClassCastException異常.

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

          8) java中的原始數據類型在每個操作系統平臺長度都是相同,而C++這些數據類型長度是隨操作系統的不同而不同,所以java在不同操作系統上執行時有個轉化過程.

          9)在java中String 是UNICODE.當java要操作一個 ASCII string 時,比C++效率上相對要低一些.

          10)java中采用的是動態鏈接

          以下內容摘自《Java程序設計與問題解決:基礎篇》附錄

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

          基本類型

          Java中的基本類型基本上和C及C++中的一樣(int、short、long、float、double和 char),但Java添加了byte和boolean類型。(近期的C++版本中也有了bool類型,對應于Java中的boolean類 型。)Java中沒有名為long double的類型。與C和C++不同,在Java中,用字節表示的某些特定基本類型值的大小是完全確定的,與實現無關。細節請參見《Java程序設計與 問題解決:基礎篇》的第2章。

          字符串

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

           控制流程

          Java中的控制結構(if-else、switch、while、do-while和for)與C和C++一樣。但是, 有一些差別會影響到對Java中控制結構的使用。具體來說,Java中沒有逗號運算符,Java中的boolean類型既不是一個數字類型,也無法將其值 強制轉換為一個數字類型,而且賦值運算符在Java中比在C和C++中表現得更好一些。

          Java中沒有逗號運算符。但是,Java中的for語句定義為可以使用逗號,就像下列代碼這樣:

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

          product = product * n;

          但這個“逗號運算符”只能在for語句中使用。

          在Java中,boolean類型有兩個值:true和false,無法將這兩個值轉換成數字值,用強制類型轉換也不行。

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

          if ( n = 42 )

          ?

          在C和C++ 中,表達式n=42會返回值42,根據所用的C或C++版本的不同,這個表達式可以是或將要被轉換成一個布爾值。在Java中,n=42也會返回值42, 但42不是boolean類型的,它也不會被轉換成boolean類型。因此,在Java中,這種錯誤會引發一個編譯器錯誤消息。

          相等性測試

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

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

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

          public static void main(String[] args)

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

          文件及包含文件

          Java中沒有#inlude指示。Java中確實有一個import語句,可以導入一整個包(庫)以供

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

        c++相關文章:c++教程



        上一頁 1 2 下一頁

        關鍵詞: 詳解 區別 JAVA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安乡县| 合山市| 闽侯县| 土默特左旗| 平安县| 荔浦县| 青海省| 寿阳县| 鸡东县| 乐陵市| 临湘市| 梅州市| 博罗县| 南康市| 巴彦县| 介休市| 化隆| 奉节县| 商水县| 肇州县| 大荔县| 璧山县| 绥芬河市| 财经| 新和县| 安塞县| 弋阳县| 双江| 天峨县| 大名县| 都昌县| 扶风县| 东港市| 霞浦县| 永平县| 瓮安县| 牟定县| 万山特区| 尖扎县| 尼木县| 甘德县|