詳情描述
千鋒西安Java培訓機構
Java是一門面向對象的編程語言,他在C的基礎上發(fā)展起來,吸收了C的各種優(yōu)點,又摒棄了C中很多難以理解的知識點。那么Java與C的區(qū)別具體有哪些呢?且聽千鋒小編給你慢慢道來。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。
C是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數(shù)據(jù)類型為特點的基于對象的程序設計,還可以進行以繼承和多態(tài)為特點的面向對象的程序設計。C擅長面向對象程序設計的同時,還可以進行基于過程的程序設計,因而C就適應的問題規(guī)模而論,大小由之。
1、Java與C在面向對象概念上的區(qū)別
在C當中,存在類內靜態(tài)成員變量的問題和Java其實是一致的,但是C仍抱有C語言特性,static生命仍具有全局概念。Java當中已經(jīng)不存在所謂的全局概念了,更準確的說是通過類邊界,將全局概念隱藏了。作用雖然一致,但是Java在于static提供類共享的時候,可能并沒有C來做的判斷合適
2、Java與C在代碼使用上的區(qū)別
這個也很多人忽略,語言只是工具,只要按照算法做就是了,但是工具可是各有各的特點,往往也被忽略掉了。
舉一個例子:空指針判斷,數(shù)組越界,異常,斷言
可能上面說的,在于C而言要完全控制的,如果不控制就會出大問題,直接對應到內存的異常。可是Java而言,由于是純面向對象語言,加上完整的基于虛擬機的異??刂?,使得數(shù)組越界而言可能并不是什么大問題,throws一個Exception和內存異常比較起來反而小的多,可見Java對于內存的隱藏優(yōu)勢。
3、Java與C在代碼組織上的區(qū)別
看C代碼,給我一個很深刻的印象就是,我能很準確的看懂他的組織形式和功能。然而Java我需要充分理解類之間的層次結構和邊界問題,往往搭建庫的時候映射到上層,很難通透的看出整個的形式和功能,只能基于類的調用來梳理。
由此也可以看出C還是遺傳了C語言的特性,是一個基于文檔目錄結構來做代碼組織的。雖然有了面向對象特性,但是就面向對象只是給C一種代碼服用以及設計時邏輯區(qū)分。然而對于Java而言,面向對象可是貫徹始終的。
舉一個例子:C頭文件的引入
很多人不太習慣為什么我寫一個類,還要引入頭文件,和Java類似寫到一個文件里面不行嗎?!其實C,這是嚴格遵守了先聲明后使用的邏輯。所以對于頭文件引入的混亂的管理可以通過這個出發(fā)點,達成一定的一致的。
4、Java與C在庫函數(shù)方面的區(qū)別
初看之下,覺得C的庫函數(shù)能做的,Java也都做了。但是其實還是有一些細微的區(qū)分的。
舉一個例子:sort()函數(shù)
C當中對于vector的排序,是通過sort(vec.begin,vec.end,compare)來進行的
Java當中呢,則是要復寫需要比較類的Compare方法的。當然Java與C還有其他區(qū)別,這里只是簡單列舉了4方面,主要是想告訴大家,雖然Java和C很相似,但兩者之間還是存在很多區(qū)別的。對Java的理解要集中到抽象的定義,把側重點應該放到類組織方式,類職責的管理層級等設計問題上來,對C的理解要充分理解C語言,除了上面提到的,也更應該注重內存問題的思考和判斷上。
想要學習更多Java知識歡迎來千鋒教育,滿滿的Java技術干貨擁抱你,你給千鋒一個機會,千鋒還你一個高薪未來。
千鋒教育:
千鋒西安校區(qū):
西安校區(qū)地址:西安市雁塔區(qū)高新六路52號立人科技C座西區(qū)4樓
面授課程:全棧WEB+培訓、全鏈路設計培訓、PHP全棧+服務器集群培訓、JavaEE+分布式開發(fā)培訓、大數(shù)據(jù)+人工智能培訓、 Unity游戲開發(fā)培訓、Python培訓、云計算+Python運維培訓、全棧軟件測試培訓、Android培訓、iOS培訓