欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C、C++和Java有哪些區(qū)別

這篇文章將為大家詳細(xì)講解有關(guān)C、C++和Java有哪些區(qū)別,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是專業(yè)的平泉網(wǎng)站建設(shè)公司,平泉接單;提供網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行平泉網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

一、編程語(yǔ)言的歷史背景

當(dāng)今世界,Java、Python、C++等編程語(yǔ)言橫行于互聯(lián)網(wǎng),各界程序員日夜奔忙,為改變世界的程序夢(mèng)拼搏奮斗。這些高級(jí)語(yǔ)言如今如此之地位,不得不讓我們驚嘆。

自1946年2月14日世界上首款計(jì)算機(jī)問(wèn)世,第一代計(jì)算機(jī)語(yǔ)言“機(jī)器語(yǔ)言”便誕生了,當(dāng)時(shí)的“機(jī)器語(yǔ)言”使用的是最原始的穿孔卡片,這種卡片上使用的語(yǔ)言只有那些真正的專家才能理解,這種“機(jī)器語(yǔ)言”是否容易理解看那個(gè)年代專家的禿頂就知道了。

“機(jī)器語(yǔ)言”本質(zhì)上是計(jì)算機(jī)能識(shí)別的唯一語(yǔ)言,而人類卻很難理解,豈一個(gè)“難”字了得。后來(lái)那些語(yǔ)言大師們?yōu)榱四茏屓藗兏菀桌斫猓谑潜阌辛说诙摹皡R編語(yǔ)言”,相比機(jī)器語(yǔ)言,匯編語(yǔ)言還是有所改良的,盡管它還是太復(fù)雜,人們?cè)谑褂脮r(shí)很容易出錯(cuò)誤,但畢竟許多數(shù)碼已經(jīng)開(kāi)始用字母來(lái)代替,這也算一大進(jìn)步了。簡(jiǎn)單的“0、1”數(shù)碼誰(shuí)也不好理解,但字母是人們能夠閱讀和拼寫(xiě)的。雖然第二代計(jì)算機(jī)語(yǔ)言仍然是“面向機(jī)器”的語(yǔ)言,但它已注定成為機(jī)器語(yǔ)言向更高級(jí)語(yǔ)言進(jìn)化的橋梁。

當(dāng)計(jì)算機(jī)語(yǔ)言發(fā)展到第三代時(shí),就進(jìn)入了“面向人類”的語(yǔ)言階段。你可以閱讀、并直接用人類的語(yǔ)言來(lái)輸入。對(duì)我們漢語(yǔ)來(lái)說(shuō),目前還不能用中文漢字來(lái)輸入指令,這主要是因?yàn)橹形牡妮斎脒€沒(méi)有一個(gè)非常好的手段。第三代語(yǔ)言被人們稱之為“高級(jí)語(yǔ)言”。高級(jí)語(yǔ)言是一種接近于人們使用習(xí)慣的程序設(shè)計(jì)語(yǔ)言。它允許用英文寫(xiě)計(jì)算程序,程序中所使用的運(yùn)算符號(hào)和運(yùn)算式子,都和我們?nèi)粘S玫臄?shù)學(xué)式子差不多。高級(jí)語(yǔ)言容易學(xué)習(xí),通用性強(qiáng),書(shū)寫(xiě)出的程序比較短,便于推廣和交流,是很理想的一種程序設(shè)計(jì)語(yǔ)言。

二、Java的誕生

Java是SUN公司推出的一種計(jì)算機(jī)語(yǔ)言,先說(shuō)說(shuō)Java這個(gè)名字的來(lái)歷吧。

Java名稱來(lái)源于太平洋一個(gè)名叫Java的小島,該島出產(chǎn)一種味道非常美妙的咖啡。當(dāng)?shù)厝朔浅O矚g咖啡,Java的發(fā)明者Gosling在這個(gè)小島上受到了當(dāng)?shù)厝恕疤厥狻钡恼疹櫍屗绨V如醉般喜歡上了咖啡的美味。Gosling認(rèn)為他發(fā)明的計(jì)算機(jī)語(yǔ)言是非常好的東西,起初他把他發(fā)明的語(yǔ)言起名為“OaK”,但是SUN公司的人發(fā)現(xiàn)已經(jīng)存在一門叫做OaK的計(jì)算機(jī)語(yǔ)言了,而現(xiàn)在嘗著如此美味的咖啡,從咖啡的靈感中索性起名為“Java”,流傳至今。

說(shuō)實(shí)際的吧,SUN公司于1995年正式推出新一代面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言Java。看到面向?qū)ο?,我們知道面向?qū)ο笳Z(yǔ)言(OOP, Object-Oriented Programming)是一類以對(duì)象作為基本程序結(jié)構(gòu)單位的程序設(shè)計(jì)語(yǔ)言。Java 是面向?qū)ο缶幊讨械囊环N代表性語(yǔ)言,但除了Java,還有C++等編程語(yǔ)言也是面向?qū)ο缶幊痰拇?,我們研究Java的發(fā)展歷史,肯定擺脫不了它的“競(jìng)爭(zhēng)對(duì)手”C++,而C++又?jǐn)[脫不了C語(yǔ)言,索性把它們?nèi)齻€(gè)放一起描述。先看下面這張描述C、C++、Java的時(shí)間歷程圖:

單從時(shí)間上看,1973年C語(yǔ)言問(wèn)世,然后在C的基礎(chǔ)上,1983年C++問(wèn)世,C++問(wèn)世的時(shí)候已經(jīng)在C語(yǔ)言的基礎(chǔ)上添加了面向?qū)ο蟮乃枷?,而Java是在1995年才出世的,單從C++和Java所共有的“面向?qū)ο蟆边@個(gè)思想上,我們也會(huì)相信它們之間肯定有故事,我們先去探索它們之間的故事吧。

三、C、C++還有Java有什么區(qū)別

自1973年C語(yǔ)言問(wèn)世后,在之后的很長(zhǎng)一段時(shí)間,很多程序員都在用C語(yǔ)言,C語(yǔ)言很受程序員的歡迎,因?yàn)樗o當(dāng)時(shí)的程序員們編程提供了極好的便利,C語(yǔ)言貼近硬件、運(yùn)行極快、效率極高,這些便利條件,讓當(dāng)時(shí)的程序員們用C語(yǔ)言開(kāi)發(fā)了很多系統(tǒng)級(jí)軟件、編譯器、數(shù)據(jù)庫(kù)、操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等。但世間萬(wàn)物有利必有弊,C語(yǔ)言的弊端就在于指針和內(nèi)存管理。

雖然指針無(wú)比強(qiáng)大,能直接操作內(nèi)存,但是沒(méi)有給工具做越界的檢查,導(dǎo)致很多新手程序員輕易犯錯(cuò)。至于內(nèi)存管理,更是讓人無(wú)語(yǔ),自己分配的空間,必須自己去釋放。C語(yǔ)言最讓人頭疼的是前面這些問(wèn)題在編譯器發(fā)現(xiàn)不了,只有在程序運(yùn)行時(shí)才會(huì)突然暴露,這總會(huì)讓程序員猝不及防,手忙腳亂,總是昏天黑地地去調(diào)試。你想啊,程序員們大量的時(shí)間和寶貴的精力都浪費(fèi)在小心翼翼的處理指針和內(nèi)存分配上,程序員怎能忍受。還有一點(diǎn),C語(yǔ)言所謂的可移植性欺騙了好多程序員,它宣稱在一個(gè)機(jī)器上寫(xiě)的程序,只要在另外一個(gè)機(jī)器上編譯就可以了,但實(shí)際上不是這樣,C語(yǔ)言要求程序員們要用標(biāo)準(zhǔn)的C函數(shù)庫(kù)。其次,如果遇到了一些針對(duì)特定平臺(tái)的調(diào)用,需要對(duì)每個(gè)平臺(tái)都得寫(xiě)一份,如果有一點(diǎn)點(diǎn)的小錯(cuò)誤,就會(huì)導(dǎo)致編譯失敗。這些算是C語(yǔ)言的一些弊端吧。

到了1983年,貝爾實(shí)驗(yàn)室推出了一門新的編程語(yǔ)言C++,添加了面向?qū)ο蟮墓δ埽嫒軨,有靜態(tài)類型檢查,性能也很好。 其實(shí)最早,C++ 相對(duì)于C語(yǔ)言的基礎(chǔ)上就添加了面向?qū)ο蠛湍K的思想,這也可以理解成 C++ 中兩個(gè)加號(hào)的來(lái)歷。然而,C++ 在面向?qū)ο笊献龅牟⒉皇翘?,比?C++ 支持多繼承,多繼承會(huì)引發(fā)不確定性。

再如,C++ 還支持指針,指針直接對(duì)內(nèi)存底層操作,雖然效率高,危險(xiǎn)系數(shù)卻非常高。例如,一個(gè)簡(jiǎn)單的病毒程序就可以靠指針完成:你通過(guò)一個(gè)程序的中給指針隨機(jī)賦值,能夠獲取到訪問(wèn)不屬于本程序執(zhí)行空間的其他空間的權(quán)限,那么這也就是一個(gè)計(jì)算機(jī)病毒。(當(dāng)然,真正的病毒不可能那么簡(jiǎn)單,但這是基本特性)。所以后來(lái)的 Java 在 C++ 的基礎(chǔ)上移除了指針,增加了引用,提高了安全性。

說(shuō)穿了,C++只不過(guò)是C語(yǔ)言的升級(jí)版,但C語(yǔ)言中存在的弊端在C++中依舊存在,直到后來(lái),1995年,Java被SUN公司正式推出,Java的一些特性很受程序員們的歡迎,比如再也沒(méi)有C語(yǔ)言那樣的指針,再也不用考慮內(nèi)存管理,而且還有真正的可移植性,編寫(xiě)一次,到處運(yùn)行,為了實(shí)現(xiàn)跨平臺(tái),Java中在操作系統(tǒng)和應(yīng)用程序之間增加了一個(gè)抽象層叫Java虛擬機(jī)。用Java寫(xiě)的程序都跑在虛擬機(jī)上,除非個(gè)別情況,都不用看到操作系統(tǒng)。

剛才提到了一個(gè)專業(yè)術(shù)語(yǔ)叫跨平臺(tái),我來(lái)解釋一下:跨平臺(tái)概念是軟件開(kāi)發(fā)中一個(gè)重要的概念,是指即不依賴于操作系統(tǒng),也不信賴硬件環(huán)境。在一個(gè)操作系統(tǒng)下開(kāi)發(fā)的應(yīng)用,放到另一個(gè)操作系統(tǒng)下依然可以運(yùn)行。

Java的跨平臺(tái)是相對(duì)于其他編程語(yǔ)言而言的,通過(guò)Java語(yǔ)言編寫(xiě)的應(yīng)用程序在不同的系統(tǒng)平臺(tái)上都可以運(yùn)行。一般的高級(jí)語(yǔ)言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼。比如在前文中提到的C語(yǔ)言,在Windows系統(tǒng)上編譯的C語(yǔ)言程序,在Linux系統(tǒng)上是不能運(yùn)行的,而Java語(yǔ)言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。

Java跨平臺(tái)的原理:java的跨平臺(tái)是通過(guò)Java虛擬機(jī)(JVM)來(lái)實(shí)現(xiàn)的。

Java源程序想象成我們的C源程序,Java源程序(.java)編譯后生成的字節(jié)碼(.class)就相當(dāng)于C源程序編譯后的二進(jìn)制可執(zhí)行文件。JVM虛擬機(jī)相當(dāng)于計(jì)算機(jī)系統(tǒng)(操作系統(tǒng)+硬件環(huán)境),Java解釋器相當(dāng)于CPU。

exe文件直接在Windows操作系統(tǒng)下運(yùn)行,在CPU上運(yùn)行的是機(jī)器碼(.exe文件)

class字節(jié)碼文件是運(yùn)行在JVM虛擬機(jī)下的,在Java解釋器上運(yùn)行的是Java字節(jié)碼文件。

Java解釋器相當(dāng)于運(yùn)行Java字節(jié)碼的CPU,但該CPU不是通過(guò)硬件實(shí)現(xiàn)的,而是用軟件實(shí)現(xiàn)的。Java解釋器實(shí)際上就是特定的平臺(tái)下的一個(gè)應(yīng)用程序。只要實(shí)現(xiàn)了特定平臺(tái)下的解釋器程序,Java字節(jié)碼就能通過(guò)解釋器程序在該平臺(tái)下運(yùn)行,這是Java跨平臺(tái)的根本。當(dāng)然,并不是在所有的平臺(tái)下都有相應(yīng)的Java解釋器程序,這也是Java并不能在所有的平臺(tái)下都能運(yùn)行的原因,它只能在已實(shí)現(xiàn)了Java解釋器程序的平臺(tái)下運(yùn)行。

還有,在C++ 中,假如你寫(xiě)同樣一個(gè)程序,在 Java 里面會(huì)報(bào)錯(cuò),而在 C++ 語(yǔ)言里面是不會(huì)報(bào)錯(cuò)的。為什么?

因?yàn)?C/C++ 語(yǔ)言設(shè)計(jì)的思想是:你想怎么寫(xiě)程序就怎么寫(xiě),只要你的這種寫(xiě)法錯(cuò)得不是很離譜,就認(rèn)為你這么寫(xiě)有特殊的含義,可以通過(guò)。但 Java 不行:只要你這么寫(xiě)有歧義,或者說(shuō)這樣寫(xiě)不太好,那么它都會(huì)報(bào)錯(cuò)。

比如 C++ 中你可以將一個(gè)浮點(diǎn)型數(shù)據(jù)賦給一個(gè)整型變量,編譯時(shí)只會(huì)警告,因?yàn)闀?huì)丟失精度,但是在 Java 中這樣寫(xiě)就會(huì)報(bào)錯(cuò),它在語(yǔ)法上就禁止你這樣寫(xiě)。這就是不同的語(yǔ)言對(duì)同樣一個(gè)問(wèn)題有不同的理解和處理方式。

由于 C++ 中大大小小的問(wèn)題會(huì)導(dǎo)致不安全性,所以就在 C++ 的基礎(chǔ)上,取其精華,去其糟粕,便形成了早期的 Java 語(yǔ)言。直到現(xiàn)在,Java 又多了很多新的特性,比如說(shuō)集合,反射,泛型,Lambda 表達(dá)式等等。

正因?yàn)閺腃語(yǔ)言到C++,最后再到Java 的發(fā)展歷史,使得 Java 在一定程度上繼承了多數(shù)C語(yǔ)言的語(yǔ)法,但又有一定的改變,而這些改變就是很多程序員喜歡Java的原因。

關(guān)于“C、C++和Java有哪些區(qū)別”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

本文題目:C、C++和Java有哪些區(qū)別
文章地址:http://aaarwkj.com/article40/jjjoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站收錄、云服務(wù)器、微信小程序、網(wǎng)站維護(hù)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国产精品国产亚洲av| 偷拍丝袜美腿亚洲超碰| 欧美国产激情一区二区| 亚洲欧美日韩精品麻豆| 97公开视频在线观看| 美日韩黄色大片免费看| 日本加勒比在线播放一区| 色呦呦视频在线免费看| 色综合天天综合天天更新| 亚洲欧美国产另类综合| 成人综合影视中文字幕| 久久精品亚洲毛片美女极品| 国产一区国产二区中文字幕| 一级欧美黄片在线播放| 久久东京热日韩精品一区| 国产精品自产拍av在线| 中文字幕人妻久久一区| 国产一区二区精品小视频| 日韩高清中文字幕在线| 日韩精品在线观看视频一区二区三区 | 亚洲欧美国产成人在线| 国产一级二级三级大胆视频| 国产精品国产精品国产| 色哟哟哟哟免费观看视频| 女同伦理视频在线观看| 成年人收看黄色一二级片| 女人的天堂亚洲的天堂欧美| 一区二区亚洲成人精品| 朋友的尤物人妻中文字幕| 天天操夜夜骑日日干| 亚洲高清有码在线观看| 美日韩黄色大片免费看| 日韩精品激情视频在线| 十八禁在线观看网址免费| 亚洲av丰满熟妇在线观看| 二区三区在线欧美日韩| 91欧美日韩在线观看视频| 国产精品一区二区三区国产| 亚洲一区二区精品偷拍| 男人的天堂av东京热一区| 亚洲欧美国产另类精品|