www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]JAVA和C++區(qū)別詳解

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++慢好多.

  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)建在堆中,沒(méi)有對(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ì)所有的區(qū)別進(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中沒(méi)有名為long double的類型。與C和C++不同,在Java中,用字節(jié)表示的某些特定基本類型值的大小是完全確定的,與實(shí)現(xiàn)無(wú)關(guān)。細(xì)節(jié)請(qǐng)參見(jiàn)《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中沒(méi)有逗號(hào)運(yùn)算符,Java中的boolean類型既不是一個(gè)數(shù)字類型,也無(wú)法將其值 強(qiáng)制轉(zhuǎn)換為一個(gè)數(shù)字類型,而且賦值運(yùn)算符在Java中比在C和C++中表現(xiàn)得更好一些。

  Java中沒(méi)有逗號(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ì)象是否是我們直覺(jué)意義上的相等。在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中沒(méi)有#inlude指示。Java中確實(shí)有一個(gè)import語(yǔ)句,可以導(dǎo)入一整個(gè)包(庫(kù))以供

  在一個(gè)類(或文件)中使用。[!--empirenews.page--]

  java 程序的總體布局是由很多類組成的,每個(gè)類都處于一個(gè)文件中。如果所有的類都位于同一個(gè)目錄(文件夾)中,Java需要使用某個(gè)類(文件)的時(shí)候,就會(huì)自動(dòng) 地找到它。通過(guò)使用import語(yǔ)句,也可以將不同目錄中的類(文件)組合起來(lái)。細(xì)節(jié)請(qǐng)參見(jiàn)《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》的5.7節(jié)(包)。

  在Java中,一個(gè)類必須位于一個(gè)與類同名、但具有后綴.java的文件中。例如,一個(gè)名為MyClass的類必須位于一個(gè)名為MyClass.java的文件中。類的編譯版本會(huì)被自動(dòng)地放在一個(gè)名為MyClass.class的文件中。

  類和方法(函數(shù))定義

  Java對(duì)方法的定義及聲明不加區(qū)別(或者,如某些作者所述,Java對(duì)方法的原型和方法的定義不加區(qū)別)。 所有的方法(函數(shù))都只有定義而沒(méi)有前向引用。沒(méi)有獨(dú)立于方法定義的“頭部”或“特征”或“原型”。所有的方法必須都是在某個(gè)類中定義的。所有的類定義都 完全是在一個(gè)文件中完成的,沒(méi)有任何類型的前向引用或接口文件。尤其是,所有的方法定義全都是在它們的類定義中給出的。細(xì)節(jié)請(qǐng)參見(jiàn)《Java程序設(shè)計(jì)與問(wèn) 題解決:基礎(chǔ)篇》的第4章(定義類和方法)。

  Java中沒(méi)有指針

  Java中沒(méi)有指針類型。但Java是有指針的。實(shí)際上,所有的對(duì)象都是以指針的方式命名的。不過(guò),指針被稱為 引(reference),會(huì)被自動(dòng)處理。例如,一個(gè)String類型的變量中會(huì)包含對(duì)一個(gè)字符串的引用(指針),但沒(méi)有String指針類型。細(xì)節(jié)請(qǐng)參 見(jiàn)《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》的4.3節(jié)。

  方法(函數(shù))參數(shù)

  嚴(yán)格來(lái)講,Java中只有一種參數(shù)傳遞機(jī)制,即,傳值。但是,實(shí)際上,通常認(rèn)為Java有兩種類型的參數(shù)傳遞機(jī) 制:一種用于基本類型(比如int、double和char),另一種用于類類型。對(duì)基本類型,唯一的參數(shù)傳遞機(jī)制就是傳值。對(duì)類類型,參數(shù)傳遞機(jī)制也被 稱為傳值,但傳遞的是類對(duì)象的引用(指針)。這就允許方法(函數(shù))修改對(duì)象中的數(shù)據(jù),因此,有些人認(rèn)為這種機(jī)制應(yīng)該被稱為傳引用機(jī)制。這并不符合大多數(shù)通 常的傳引用(call-by-reference)定義,但在實(shí)現(xiàn)一些簡(jiǎn)單任務(wù)時(shí),它的表現(xiàn)與傳引用非常相似。細(xì)節(jié)請(qǐng)參見(jiàn)《Java程序設(shè)計(jì)與問(wèn)題解決: 基礎(chǔ)篇》的第4章和第5章。數(shù)組

 

  Java數(shù)組與C或C++數(shù)組很類似,但它們還是有些區(qū)別的,Java數(shù)組的表現(xiàn)更好一些。Java中的數(shù)組“知道”它的范 圍。如果a是一個(gè)數(shù)組,那么實(shí)例變量a.length中就包含了一個(gè)與數(shù)組可以承載的元素個(gè)數(shù)相等的整數(shù)。可以查看Java數(shù)組索引是否越界,如果代碼試 圖使用一個(gè)越界的數(shù)組索引(下標(biāo)),就會(huì)拋出一個(gè)異常。細(xì)節(jié)請(qǐng)參見(jiàn)《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》的第6章。

  垃圾回收

  Java中的內(nèi)存管理和垃圾回收是自動(dòng)進(jìn)行的。Java使用了new運(yùn)算符來(lái)創(chuàng)建一個(gè)類類型的新對(duì)象(因此這個(gè)過(guò)程就是一種內(nèi)存分配形式),但Java中沒(méi)有其他的內(nèi)存分配形式了。Java中沒(méi)有程序員可以用來(lái)進(jìn)行垃圾回收的機(jī)制。垃圾回收是自動(dòng)進(jìn)行的。

  其他的比較

  Java和C++中的注釋在本質(zhì)上是完全一樣的。

  Java中沒(méi)有全局變量。

  Java中沒(méi)有枚舉類型。

  Java中沒(méi)有typedef。

  Java中沒(méi)有結(jié)構(gòu)或聯(lián)合。

  可以像在C++中那樣,在Java中對(duì)方法(函數(shù))名進(jìn)行重載,但在Java中不能對(duì)運(yùn)算符進(jìn)行重載。

  Java中沒(méi)有多重繼承,但它確實(shí)通過(guò)接口恢復(fù)了多重繼承的很多功能。更多關(guān)于接口的細(xì)節(jié)請(qǐng)參見(jiàn)《Java程序設(shè)計(jì)與問(wèn)題解決:基礎(chǔ)篇》的第7章。

  Java中沒(méi)有模板,但它確實(shí)通過(guò)泛型恢復(fù)了模板的很多功能。

  在Java中,類可以有一個(gè)與類具有相同類型參數(shù)的構(gòu)造器,但這個(gè)構(gòu)造器沒(méi)什么特殊的地位,不同于C++中的副本構(gòu)造函數(shù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉