淺析:Java與C++的主要區別

jopen 12年前發布 | 40K 次閱讀 Java Java開發

Java區別于C++

表面看來兩者最大的不同在于Java沒有指針,或者說,Java滿地都是指針。對于編程者而言Java的這種設計是安全且更易用的。說Java滿地是指針的原因在于它把指針的功能隱藏了,其實在程序的深處,指針仍以存儲地址的形式存在著。由于程序員無法獲知真實地址,實際上提供了一個更加安全的系統,避免意外破壞。

1.引用

對于簡單數據類型,Java將和C++同樣采取直接存儲的方式。如 int a=1;

一個名為a的存儲地址將存儲整型指1

對于對象,如 Object o;

一個名為o的存儲地址將存儲的是一個Object類型的地址的引用而非對象本身,對象本身被存儲在別處。

C++

Object o;

這句話將創建一個對象,且留出了存儲這個對象所需的空間。在C++中也存在引用,但是需要顯式說明,用&符號。

2.賦值

O1=O2;

C++中將一個名為O2的對象的數據復制給O1,即存在兩個對象,他們的值相同。

而在Java中,這句話只是把O2對象的引用復制給了O1,此時它們指向同一個對象,即只存在一個對象。

4.垃圾回收機制

C++中,對于不再需要的空間,需要用delete來釋放,估計大家幾乎都經歷過忘記或者錯誤刪除存儲空間的經歷吧,后果是內存泄露,系統資源被消耗,程序不穩定,甚至系統崩潰...

對于Java,這樣的問題就不復存在了,程序員無需理會內存管理,系統將自動檢查并回收空閑內存區。

5.參數

對于類類型,在參數傳遞時,Java的實參和形參指向同一對象,C++的形參指向的是復制來的另一個對象。

對于基本數據類型,都采用值傳遞...

6.==

對類類型,Java==判定的是兩者是否指向同一對象,即是否為同一對象的引用。若要判定值是否相等,需調用在Object類中定義的equals()方法。

7.重載操作符

C++有而Java沒有。Java中可以采用命名的辦法...

8.基本變量類型

CC++用整數值來表示真假,而Java中布爾型是獨立的,truefalse...

Javaint變量32位,C/C++則取決于計算機環境。

JavaString是類類型而非基本類型。

對于C/C++可以自動進行的類型轉換,Java要顯式轉換

9.輸入輸出

Java的輸入輸出是個令人發指的玩意兒...這是我首次接觸是的趕腳

字符串輸入:

InputStreamReader isr=new InputStreamReader(System.in);

BufferReader br=new BufferReader(isr);

String s=br.readLine();

輸入字符:

InputStreamReader isr=new InputStreamReader(System.in);

BufferReader br=new BufferReader(isr);

String s=br.readLine();

char c=s.charAt(index);

輸入整數:

InputStreamReader isr=new InputStreamReader(System.in);

BufferReader br=new BufferReader(isr);

String s=br.readLine();

int a=Integer.parseInt(s);

輸入浮點數:

InputStreamReader isr=new InputStreamReader(System.in);

BufferReader br=new BufferReader(isr);

String s=br.readLine();

Double d=Double.valueOf(s);

double db=d.doubleValue();

其中Double是雙精度浮點型數據的封裝類。。。</span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!