淺談Java 和 C# 的語法區別(基礎向)


最近在學習Java。之前一直是做的.NET開發,用的C#,正好最近有空閑時間,就看了看一直想了解的Java。

都說C#和Java很是接近,看了幾天的書,發現確實如此,基本該有的東西兩邊都有,內容都大同小異,不過C#到底是占了后出來的便宜,很多地方比Java封裝得更方便些。當然,這不是重點,簡單的幾天學習,雖說總體相近,但處處還是透露着不同,本着隨手做一做讀書筆記心態,大概收集了些簡單的,大抵是些語法上的不同。

因為本身就是初學者,有錯誤的地方還望指正,謝謝。

 

 

Java

C#

常量

使用 final 關鍵字

(const作為保留關鍵字,沒有使用)

使用const 關鍵字

==

在對比string的時候,只能對比兩個string是否引用同一位置,對比值是否相等的正確做法應該使用equals()方法

C#中的string重載了== 操作符,使其在內部調用了equals方法,所以可以直接使用於對比值

goto 語句

goto雖然作為保留字,但是並沒用使用。

可以使用,但是不推薦,通常goto語句被認為是一種拙劣的程序設計風格。

break

除了中斷當前的控制流程外,Java還支持帶標簽的break。

 

label:

{

       While(XXX)

            {

                  While(XXXXX)

                      {

                             //退出循環語句塊

                             break label;

                      }

            }

}

//會直接跳到這里

 

某種程度上說,這是goto語句的一種替代,但是只能跳出語句塊,不能跳入

只能跳出當前的break關鍵字所在的語句塊。

運算符重載

不支持

支持,但不是全部

在構造函數中調用其他構造函數

直接使用this(參數)調用

在當前構造函數的方法簽名后使用:this(參數)調用

包與命名空間

(兩者類似,但是又不相同)

包,使用package

同時使用import導入類

命名空間,使用namespace

同時使用using導入類

繼承關鍵字

使用extends

使用 :

調用父類構造函數

使用super(參數)調用

在構造函數的方法簽名后使用: base(參數)調用

調用父類方法

使用super.方法名(參數)

使用base.方法名(參數)

方法的重寫

直接重寫,使用相同的方法簽名。方法默認動態綁定,即為所有方法創建方法表。

 

使用final關鍵字,可以使方法無法在子類中被重寫

使用同樣的方法簽名,同時使用override 關鍵字,且父類需要重寫的方法必須是虛方法virtual關鍵字,或者為抽象方法abstract關鍵字。且只為這些方法創建方法表。

 

沒有聲明為虛方法或者抽象方法的方法,無法在子類中被重寫

 

類型判斷

使用instanceof

使用is

訪問修飾符

除相同修飾符外,默認為對本包可見,沒有修飾符

除相同修飾符外,默認為對相同命名空間可見,可以顯式使用internal關鍵字

定義封閉類(不可被繼承)

使用final關鍵字

使用sealed關鍵字

可變參數方法

方法名(類型…參數名){}

方法名(params 類型[] 參數名){}


免責聲明!

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



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