區別:Java不可以將一個非布林值當作布林值在邏輯表達式中使用,C 卻可以。 C 引入了操作符重載機制,Java不支援。 C 有goto,Java沒有goto。 C 中有多繼承,Java只有單一繼承,但Java可以透過介面實作多繼承。
本教學操作環境:windows7系統、C 17&&java8版本、Dell G3電腦。
C 和Java的差異:
儘管Java是基於C 的的,但相較之下,Java是一種更純粹的物件導向程式設計語言。在Java中,一切都被視為物件。
1、C 建立物件之後,需要再使用完將其呼叫delete方法將其銷毀;Java有垃圾回收機制,用來監視new出來的所有對象,辨別不會再被引用的對象,然後釋放記憶體空間。
2、作用域(C、C 、Java的作用域由花括號的位置決定):
但是以下程式碼在C和C 中是合法的,在Java中編譯器會報告變數已定義。因為C和C 會將較大作用域的變數隱藏起來,但是Java不允許。
{ int x = 12; { int x = 96; } }
3、基本成員的預設值
當變數作為類別的成員使用時,Java才會給予預設值,以確保那些基本類型的成員變數被初始化,但是C 沒有此功能。而對於局部變量,C 編譯器會對其給予警告,Java則會視為錯誤。
4、Java不可以將一個非布林值當作布林值在邏輯運算式中使用,C 卻可以。
在C 中表達式的值為0則為假,非0則為真。
例如:
if(1){ }
5、移位運算子
Java新增了一個「無符號」右移位運算子(>>> ),它使用“零擴展”,無論正負,都在高位插入0。這是C、C 所沒有的。
6、C 引入了操作符重載機制,Java不支持,但C#中可以實作自己的重載運算子。
7、Java允許我們把任何基本資料型別轉換成別的基本資料型別,除了布林型別外。 【相關影片教學推薦:Java影片教學】
#8、Java沒有Sizeof()。在C\C 中,sizeof()操作符可以告訴我們為資料項目分配的位元組數,因為C 中不同的資料類型在不同的機器上可能有不同的大小。但是Java中所有資料類型在所有機器中大小都是相同的。 (例如,C 的int在16位元機器上為16位,在32以上為32位,long在32位及以下為32位,在64位上為64位)
#9、C有goto,Java沒有goto。
Java提供了一個類似的跳轉機制:標籤。用法label:
label1: outer-iteration{ inner-iteration{ break;(1) continue;(2) continue label1;(3) break label1;(4) } }
(1)中,break中斷內部迭代,回到外部迭代
(2)中, continue使執行點移回內部迭代的起始處。
(3)中,continue label1同時終端內部迭代以及外部迭代,直接轉到label1處;隨後繼續迭代,從外部迭代開始。
(4)break label1 也會中斷所有迭代,並回到label1處,但不會重新進入迭代。即完全終止兩個迭代。
10、C 中析構函數是提供一個在物件刪除前可以釋放這個物件所佔用的資源的機會,但是Java並未提供「析構函數」或類似的概念。 【相關影片教學推薦:C 影片教學】
在C 中,物件一定會被銷毀(程式沒有缺陷的情況下);
在Java裡,對象卻並非總是被垃圾回收。 (垃圾回收不等於「析構」)
11、名稱屏蔽
#如果Java的基底類別擁有某個已被多次重載的方法名稱,那麼在匯出類別中重新定義該方法名稱並不會屏蔽其在基底類別中的任何版本。而C 若要在子類別中引入一個新的重載方法,則需要屏蔽基底類別方法。
12、C 中多繼承,Java中只有單一繼承。 Java可以透過介面實作多繼承。
13、Java是半解釋和半編譯的,運行速度比C 慢。
14、Java沒有Struct或Union
15、Java的泛型不允許使用基本資料型別。
16、陣列
在c 中,當陣列定義時,已指派儲存空間,並可使用。 (定義時指定數組大小)
在java中,數組定義時,int arr[],隻字義了數組變量,數組是不可以使用的。只有陣列new以後,才會建立數組,分配儲存空間,並且可以使用。 (定義時指定數組大小是非法的,創建時指定數組大小)
#17、C 有指針,Java沒有。
18、附加C 在32位元和64位元系統的主要長度比較:
更多程式相關知識,請造訪:程式設計影片! !
以上是java和c++的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!