Java語言與C++語言區別


最近有點空閑時間,學習了Java語言。教材《Java簡明教程》第四版,清華大學出版社。本人以前有C++基礎,所以主要總結下兩者區別。

 

一、基本類型和運算

 1.布爾常量,true和false不是數值,不能進行算術運算。而C++實際是整型。

2.字符串常量,Java作為對象,有自己的屬性和方法。C++,采用‘\0’結束的字符數組。

3.字符型變量,Java采用Unicode編碼,長度為16位,最大值65535。而C++是8位,最大值128。

4.局部變量檢查,當局部變量和外層如類中全局變量相同時,提示編譯錯誤。Java認為相同的命名會容易導致對程序的誤解和混淆。C++則“小范圍變量屏蔽大范圍變量”。

5.變量賦值,類中未給出初始化值,將默認為0,或者空等。而C++不確定的值。

                    在方法中,未給出初始值,Java無法通過編譯。C++則不會。

6.類型轉換,int x=2+3.14; C++編譯通過。Java編譯失敗,必須改成如下進行強制轉換:

       int x=2+(int)3.14;

7.引用,Java規定基本類型按值傳遞,對象類型按引用傳遞。返回值類似。但是Java引用是沒有任何特殊標志,而C++則用‘&’表示。

8.%運算符,Java不但可以對整型運算,浮點型也可以。C++只能對整型運算。

總的來說,Java是一種強類型語言,對變量和常量的類型檢驗比較嚴格。但同時又具備更好的擴展性。

 

二、類和對象

1.首先,從編輯和文件管理而言,Java的類定義和實現放在一起。C++是分開的。

2.關鍵字this,Java中是特殊的引用,既可以指代對象,也可以指代構造函數(也只能放在構造函數的第一句,所以用在構造函數的重載函數中)。

    而C++中,this只能是指向自己的指針,沒有指向函數的功能。

3.Object類,Java所有其他類的祖先。C++沒這個概念。因為Java基於類設計語言,C++可以基於函數。

4.關鍵字super,當父類定義了默認構造函數即無參數構造函數,子類可以自動調用父類的該構造函數。

但是當父類定義了帶參數的構造函數時,子類必須通過super調用父類的該構造函數。C++通過初始化列表。

5.關鍵字final,可以修飾變量和參數,相當於C++中的const。也能修飾類和方法,表示不能被繼承,表示終極類和終極方法。

6.關鍵字abstract,修飾類和方法,表示抽象類和抽象方法,一般用來被繼承。修飾方法時,類似於C++中的純虛函數。

  

三、字符串處理

 C++對字符串處理常用數組,沒有提供字符串對象,如果想要使用對象,則需要自己封裝。而Java提供了兩個類和一系列方法。

1.String類,常量,值不會改變。注意,關系操作符‘==’用於地址比較,而equals方法,用於內容比較。

2.StringBuffer類,帶緩沖區的字符串,值可以被改變。

3.運算操作符,操作符‘+’可以連接兩個String對象,不能連接兩個StringBuffer對象。Java取消了運算操作符,但保留了String的‘+’和‘+=’。

4.StringBuffer對象到String對象的轉換,通過toString()方法。

5.其他,String對象可直接賦值,StringBuffer賦值則通過構造函數。

 

四、多線程

C++多線程往往需要自己編寫。而Java標准庫支持多線程。例如Java的垃圾回收器是一個低優先級的線程。

1.Java定義了一個類Thread和一個接口Runable。

2.采用synchronized實現多線程同步,協調資源,保護共享變量和方法。

3.多線程優先級,范圍1-10,默認值5。

4.線程間通訊,主要有三個方法:wait(),notify(),notifyAll()。其中,wait()和notify()必須成對出現。

 

五、其他

1.Java先編譯后解釋執行,而C++是純編譯方式。所以后者執行速度快。

2.Java結構中立,字節碼的中介方式,與運行平台無關。所以可移植性好。

3.Java的變量長度確定不變,與運行平台無關。如int類型都是四個字節。而C++不一樣,跟平台有關。所以Java移植性比C++佳。

4.Java僅支持單繼承(關鍵字extends表示繼承),支持多接口(關鍵字interface定義,關鍵字implements表示實現);當然接口之間也可以存在繼承關系(extends)。

  而C++支持多繼承,甚至還可以虛擬繼承。

 

 

目前學習到的主要區別是這些,歡迎批評指正。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM