據(jù)了解,想入門(mén)學(xué)編程的同學(xué)都會(huì)在Java和python這兩門(mén)課程之間糾結(jié),python相對(duì)比較簡(jiǎn)單,所以選擇的同學(xué)也會(huì)比較多,目前python也有超過(guò)Java的趨勢(shì),不過(guò)作為最傳統(tǒng)的編程語(yǔ)言之一,Java身上也有其獨(dú)特的閃光點(diǎn)。下面就和小編一起來(lái)看看Java和python的區(qū)別吧! Python和Java是兩種截然不同的編程語(yǔ)言,但兩者都算是主流的編程工具。兩個(gè)我覺(jué)得都很好,就看你需要的是什么了,選擇還需你自己做,你可以看下這兩種語(yǔ)言的比較然后看那一種適合自己。 Java和Python之間最大的區(qū)別之一就是兩種語(yǔ)言處理變量的方式。Java你在第一次聲明變量時(shí)就定義其類(lèi)型并且不允許你在后面的程序中更改它的類(lèi)型。這就是靜態(tài)類(lèi)型。與之相反,Python不許聲明時(shí)定義變量類(lèi)型,可以改變一個(gè)變量的類(lèi)型,例如可以把整型替換為字符串。但是不要因此以為Python是一個(gè)弱類(lèi)型語(yǔ)言,因?yàn)椴恍枰付?lèi)型,還可以隨時(shí)改變,事實(shí)上,Python是強(qiáng)類(lèi)型語(yǔ)言,變量所綁定的對(duì)象在對(duì)象創(chuàng)建初期就確定好了類(lèi)型,永遠(yuǎn)不可能被改變。同樣,Java也是一個(gè)強(qiáng)類(lèi)型語(yǔ)言。 在Python中,不論是數(shù)值(整型、浮點(diǎn)型),字符串,字典,元組對(duì)象,還是他們所對(duì)應(yīng)的類(lèi)型,以及函數(shù),模塊等你所能看到的都是對(duì)象,他們的祖先是PyObject。而Java中至少函數(shù),基本數(shù)據(jù)類(lèi)型都不算對(duì)象。 Python與眾多編程語(yǔ)言的不同之處還在于它使用縮進(jìn)將代碼分割成塊。Java,像大部分其他語(yǔ)言一樣,使用大括號(hào)定義函數(shù)和類(lèi)定義的開(kāi)頭和結(jié)尾。使用縮進(jìn)的好處在于它你將你的程序?qū)懙帽容^易讀,不會(huì)有缺括號(hào)導(dǎo)致錯(cuò)誤的可能。 Java的可移植性繼母十七歲更強(qiáng),它可以用于開(kāi)發(fā)平立的應(yīng)用。這是Java相較于Python的優(yōu)勢(shì)之一,任何可以運(yùn)用Java虛擬機(jī)的電腦或者移動(dòng)設(shè)備都可以運(yùn)行Java的應(yīng)用,而不管你在哪里運(yùn)行Python的程序你都需要一個(gè)編譯器來(lái)將Python代碼為你特定的操作系統(tǒng)可理解的代碼。這是因?yàn)榇蟛糠衷O(shè)備已經(jīng)安裝了Java虛擬機(jī),所以Java程序員可以自信的說(shuō)他們的應(yīng)用幾乎對(duì)所有用戶都可用。 Python中的GIL一直被不少開(kāi)發(fā)者所詬病,GIL是指全局解釋鎖,Python的多線程在多CPU條件下并不能并行的運(yùn)行,而只能是每個(gè)線程運(yùn)行的時(shí)候首先需要獲得解釋器的訪問(wèn)權(quán)限才可以執(zhí)行,其他線程只能處于等待的過(guò)程,不過(guò)GIL并不是Python的致命缺點(diǎn),否則現(xiàn)在沒(méi)人會(huì)用的,因?yàn)橛泻芏喾桨甘菂f(xié)程,或者是用多進(jìn)程機(jī)制來(lái)彌補(bǔ)。而Java支持真正的多線程并發(fā)操作,能很好的控制資源的的共享。 Java主要用于商業(yè)邏輯強(qiáng)的領(lǐng)域,如商城系統(tǒng),金融,保險(xiǎn)等傳統(tǒng)數(shù)據(jù)庫(kù)事務(wù)領(lǐng)域,通過(guò)類(lèi)似ssh框架事務(wù)代碼,對(duì)商業(yè)數(shù)據(jù)庫(kù),如oralce,db2,sql server等支持較好,軟件工程較強(qiáng),適合軟件工程式的多人開(kāi)發(fā)模式。Python主要用于web數(shù)據(jù)分析,科學(xué)計(jì)算,金融分析,信號(hào)分析,圖像算法,數(shù)學(xué)計(jì)算,統(tǒng)計(jì)分析,算法建模,服務(wù)器運(yùn)維,自動(dòng)化操作,快速開(kāi)發(fā)強(qiáng),適合快速開(kāi)發(fā)團(tuán)隊(duì)或個(gè)人敏捷模式。 如果你剛開(kāi)始考慮學(xué)習(xí)編程,你可能會(huì)發(fā)現(xiàn)Python更加易學(xué)。Pyton的語(yǔ)法設(shè)計(jì)的非常直觀,并且其相對(duì)的簡(jiǎn)單性讓新手們可以快速上手寫(xiě)各種應(yīng)用。而Java的學(xué)習(xí)曲線則更加陡峭。 但是入門(mén)簡(jiǎn)單,并不代表會(huì)一直簡(jiǎn)單。要學(xué)會(huì)用Python干活,還需要學(xué)習(xí)Python的各種庫(kù),它的強(qiáng)大在于庫(kù),原因是python的庫(kù)可以用python,c語(yǔ)言,c++等設(shè)計(jì),再提供給python使用,所以無(wú)論gpu運(yùn)行,神經(jīng)網(wǎng)絡(luò),智能算法,數(shù)據(jù)分析,圖像處理,科學(xué)計(jì)算,各式各樣的庫(kù)在等著你用。而Java就沒(méi)有那么多開(kāi)源庫(kù)。 你兩個(gè)都學(xué),從Python開(kāi)始,然后學(xué)java,Java很有用,工作機(jī)會(huì)多,會(huì)用Python,做任何一種開(kāi)發(fā)工作都很有用。而且如果你從0開(kāi)始做一個(gè)項(xiàng)目,python往往是更好的啟動(dòng)技術(shù)。對(duì)于大型的互聯(lián)網(wǎng)項(xiàng)目,同時(shí)運(yùn)行python和java的節(jié)點(diǎn)也常常見(jiàn)的。 簡(jiǎn)單的說(shuō),無(wú)論學(xué)任何語(yǔ)言,都值得把python當(dāng)作輔助技術(shù)。學(xué)Python作為主力語(yǔ)言,也最好有其它語(yǔ)言的知識(shí)背景。 一、python虛擬機(jī)沒(méi)有java強(qiáng),java虛擬機(jī)是java的核心,python的核心是可以很方便地使用c語(yǔ)言函數(shù)或c++庫(kù)。 二、python是全動(dòng)態(tài)性的,可以在運(yùn)行時(shí)自己修改自己的代碼,java只能通過(guò)變通方法實(shí)現(xiàn)。python的變量是動(dòng)態(tài)的,而java的變量是靜態(tài)的,需要事先聲明,所以java ide的代碼提示功能優(yōu)于python ide。 三,python的產(chǎn)生幾十年了,幾十年前面向過(guò)程是主流,所以用python有好多程序用的是面向過(guò)程設(shè)計(jì)方法,很多概念從c語(yǔ)言過(guò)來(lái)的,class在python中是后加入的,而java是為了實(shí)現(xiàn)沒(méi)有指針的c++(當(dāng)年com組件用的引用記數(shù),java用的虛擬機(jī)),主要采用面向?qū)ο蟮脑O(shè)計(jì)方法,很多概念是oop的概念。面向過(guò)程,相對(duì)簡(jiǎn)潔直觀,但容易設(shè)計(jì)出面條程序,面向?qū)ο螅鄬?duì)抽象優(yōu)雅,但容易過(guò)度抽象。 四,在實(shí)際使用的python入門(mén)簡(jiǎn)單,但要學(xué)會(huì)用python干活,需要再學(xué)習(xí)python各種庫(kù),pyhton的強(qiáng)大在于庫(kù),為什么python的庫(kù)強(qiáng)大,原因是python的庫(kù)可以用python,c語(yǔ)言,c++等設(shè)計(jì),再提供給python使用,所以無(wú)論gpu運(yùn)行,神經(jīng)網(wǎng)絡(luò),智能算法,數(shù)據(jù)分析,圖像處理,科學(xué)計(jì)算,各式各樣的庫(kù)在等著你用。而java沒(méi)有python那么多的開(kāi)源庫(kù),很多庫(kù)是商業(yè)公司內(nèi)部使用,或發(fā)布出來(lái)只是一個(gè)jar包,看不到原始代碼。python虛擬機(jī)因?yàn)榫幾g性沒(méi)有java的支持的好(或者說(shuō)故意這么設(shè)計(jì)的),一般直接使用源碼(linux),或源碼簡(jiǎn)單打個(gè)包(如pyexe)。 五、python有很多虛擬機(jī)實(shí)現(xiàn),如cython,Pyston,pypy,jython, IronPython等等,適合用于業(yè)務(wù)語(yǔ)言,或插件語(yǔ)言,或面向領(lǐng)域語(yǔ)言,而java因?yàn)樘摂M機(jī)巨大,很少用于插件語(yǔ)言,發(fā)布也不方便。 六、java主要用于商業(yè)邏輯強(qiáng)的領(lǐng)域,如商城系統(tǒng),erp,oa,金融,保險(xiǎn)等傳統(tǒng)數(shù)據(jù)庫(kù)事務(wù)領(lǐng)域,通過(guò)類(lèi)似ssh框架事務(wù)代碼,對(duì)商業(yè)數(shù)據(jù)庫(kù),如oralce,db2,sql server等支持較好,軟件工程較強(qiáng),適合軟件工程式的多人開(kāi)發(fā)模式。python主要用于web數(shù)據(jù)分析,科學(xué)計(jì)算,金融分析,信號(hào)分析,圖像算法,數(shù)學(xué)計(jì)算,統(tǒng)計(jì)分析,算法建模,服務(wù)器運(yùn)維,自動(dòng)化操作,快速開(kāi)發(fā)強(qiáng),適合快速開(kāi)發(fā)團(tuán)隊(duì)或個(gè)人敏捷模式。 八、python用途最多的是腳本,java用途最多的是web,pyhotn是膠水,可以把各類(lèi)不相關(guān)的東西粘在一起用,java是基佬,可以通過(guò)軟件工程組成幾百個(gè)人的團(tuán)隊(duì)和你pk,商業(yè)化氣息重。不過(guò)我認(rèn)為還是python強(qiáng)大,因?yàn)榭梢苑奖阏{(diào)用c或c++的庫(kù),但軟件工程和商業(yè)化運(yùn)作沒(méi)有java好,適合快捷開(kāi)發(fā)。 如果你想寫(xiě)程序賣(mài)軟件用java,可用上ibm服務(wù)器,上oracle數(shù)據(jù)庫(kù),上EMC存儲(chǔ),價(jià)格高,商業(yè)采購(gòu)公司喜歡這種高大上。如果你要直接用程序生成用python,python可以實(shí)現(xiàn)寬客金融,數(shù)據(jù)回測(cè),炒股,炒期權(quán),炒黃金,炒比特幣,對(duì)沖套利,統(tǒng)計(jì)套利,有很多開(kāi)源庫(kù),數(shù)據(jù)分析庫(kù),機(jī)器學(xué)習(xí)庫(kù)可以參考。 十一、對(duì)于移動(dòng)互聯(lián)網(wǎng),python只能通過(guò)運(yùn)行庫(kù)運(yùn)行于或ios,java原生支持開(kāi)發(fā),但不能用ios中。 十二、對(duì)于大數(shù)據(jù),hadoop用java開(kāi)的, spark用Scala開(kāi)發(fā),用python調(diào)用spark再分析更方便。返回搜狐,查看更多 本文由 恒宇國(guó)際(www.neivn.cn)整理發(fā)布 |