標籤:
Java與C語言的區別:
C語言和JAVA其實是很相識的,最直接的區別就在與,一個是全面向過程,一個是物件導向。而且JAVA是可以跨平台的。而C語言不能,但能夠直接操作硬體,並且產生機器碼的效率高。C語言多了一個,指標也是C語言的精髓,想要學好C語言,指標就必須學好。JAVA是沒有指標的。
在文法中:JAVA是從可以算是從C++發展而來的,因此Java與C語言的文法比較類似的。
在記憶體的管理中:
C語言在使用完一塊記憶體時,要手動把記憶體釋放掉,如果不釋放的話,運行久了,程式很容易就會崩潰掉的。由於需要顯式的歸還記憶體,因此當一個函數需要將一塊記憶體返回給調用者的時候,問題就比較複雜了。所以我們所以時要注意:(1) 在調用者中先分配好記憶體,作為參數傳入到被調用的函數中(2) 在被調用的函數中分配,使用完後在調用者中釋放(3) 在被調用函數中使用static變數,可以將該變數返回。
而JAVA基本不用考慮記憶體的問題,如果想用一個對象,new一個就可以,這個過程的背後則是JRE為對象分類的一定記憶體,當JRE發現你不再使用這個對象的時候,他就會自動回收記憶體,也就是說你只管借東西,不用管歸還,因為與有人當你的跟班,在你不使用的時候就把東西歸還了,不過這個過程還是有的,只不過是JRE作的而已。
文法中使用的基本類型:
C語言有著很多的基本類型如:(boolean, char, byte, short, int, long, float, double,struct, union, enum)還有數組,指標等等。
在JAVA中:只有(boolean, char, byte, short, int, long, float, double)這8種基本類型和引用的。
在繼承中:兩種語言都支援方法重載的,C語言是多線繼承,JAVA是單繼承的。動態、靜態繫結:
在C語言中,為了允許運行時動態決定哪個函數被調用,一個函數必須用virtual修飾。virtual關鍵字被自動繼承,用以支援多態;凡是沒有用virtual修飾的成員函數(包括static)都是靜態繫結的,即在編譯時間決定調用哪個版本。而在Java中,除了static、final、private是靜態繫結以外,所有方法一律按動態綁定處理。
初始值:在C語言中,是可以不初始化使用的,而在JAVA中,是必須初始化值的。
抽象方法或抽象類別:C語言的對等文法是“純虛函數”和“抽象類別”,Java使用abstract關鍵字修飾抽象方法或抽象類別,final類不能被繼承
都使用抽象類別作為繼承層次中的基類,提供一般概念,由子類實現其抽象方法,且抽象類別都不能被直接執行個體化為對象。
super:JAVA super關鍵字,指代父類對象,通常被用於調用父類的構造方法或一般方法,C語言沒有super關鍵字。
this:兩者都有,都是只當前的對象
package:C語言沒有,Java有package的概念,可以將類組織起來,便於打包和部署,也有利於類的安全。
在文法中還有很多的差異,就不一一列出來了,可以看出,JAVA比C語言要精簡很多,在生活上的實用性也很強,C語言卻是哎操作記憶體上比較強。也就是說JAVA比較適合在上層工作,只要我們懂得介面就好,而C語言卻是在網路下層工作的,要對協議比較瞭解。總之,各有各的好處,各有各的領域。
Java的優點