java和c++的区别是什么(Python与C++的区别)
本教程操作環境: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允許我們把任何基本數據類型轉換成別的基本數據類型,除了布爾類型外?!鞠嚓P視頻教程推薦: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++的區別是什么的詳細內容,更多請關注風君子博客其它相關文章!
總結
以上是生活随笔為你收集整理的java和c++的区别是什么(Python与C++的区别)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国开mysql答案_国开MySQL数据库
- 下一篇: 窗口切换快捷键是什么(win11关机快捷