1. 程式人生 > >Java與C#的一些不同點

Java與C#的一些不同點

1.屬性: java中定義和訪問均要用get和set方法,可以不成對出現。 c#中是真正的屬性,定義時get和set必須同時出現,房問時用.號即可。不用get,set 2.物件索引 就是物件陣列 public Story this [int index] { 3.C#中,不用任何範圍修飾符時,預設的是protect,因而不能在類外被訪問. 4.因為JAVA規定,在一個檔案中只能有一個public類,而且這個類的名稱必須與檔名一模一樣,這是一個區別 5.在C#中,它是以Main方法來定位入口的.如果一個程式中沒有一個名為Main的方法,就會出"找不到入口的錯誤".不要把Main寫成main喲 6.C#預定義的簡單資料型別比Java多。例如,C#有unit,即無符號整數 7.忘掉Java中的static final修飾符。在C#中,常量可以用const關鍵詞宣告 C#的設計者還增加了readonly關鍵詞,readonly域只能通過初始化器或類的建構函式設定 8.公用類的入口點:c#是可以對Main進行過載(java中是main),允許有int返回值和空引數的Main 9.在Java中,switch語句只能處理整數。但C#中的switch語句不同,它還能夠處理字元變數。請考慮下面用switch語句處理字串變數的C#程式碼 10.C#沒有>>>移位操作符 11.goto關鍵詞: Java不用goto關鍵詞。在C#中,goto允許你轉到指定的標籤。不過,C#以特別謹慎的態度對待goto,比如它不允許goto轉入到語句塊的內部。在Java中,你可以用帶標籤的語句加上break或continue取代C#中的goto。 12.int[] x = { 0, 1, 2, 3 }; int x[] = { 0, 1, 2, 3 }; 但在C#中,只有第一行程式碼合法,[]不能放到變數名字之後。 13.與Java不同的是,C#允許為名稱空間或者名稱空間中的類指定別名: using TheConsole = System.Console; 14.在Java中,包的名字同時也是實際存在的實體,它決定了放置.java檔案的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的 .NET中包的實體稱為程式集(Assembly)。每一個程式集包含一個manifest結構。manifest列舉程式集所包含的檔案,控制 哪些型別和資源被顯露到程式集之外,並把對這些型別和資源的引用對映到包含這些型別與資源的檔案。程式集是自包含的,一個程式集可以放置到單一的檔案之 內,也可以分割成多個檔案。.NET的這種封裝機制解決了DLL檔案所面臨的問題,即臭名昭著的DLL Hell問題。 15.在Java中,java.lang包是預設的包,C#中不存在預設的包 16.C#中的訪問修飾符與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示: public:成員可以從任何程式碼訪問。 protected:成員只能從派生類訪問。 internal:成員只能從同一程式集的內部訪問。 protected internal:成員只能從同一程式集內的派生類訪問。 private:成員只能在當前類的內部訪問。 17.由於C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞 18.與Java不同,C#中的介面不能包含域(Field)。 另外還要注意,在C#中,介面內的所有方法預設都是公用方法。在Java中,方法宣告可以帶有public修飾符(即使這並非必要),但在C#中,顯式為介面的方法指定public修飾符是非法的。例如,下面的C#介面將產生一個編譯錯誤。 19.C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來測試某個物件的例項是否屬於特定的型別。在Java中沒 有與C#中的as操作符等價的操作符。as操作符與is操作符非常相似,但它更富有“進取心”:如果型別正確的話,as操作符會嘗試把被測試的物件引用轉 換成目標型別;否則,它把變數引用設定成null。 20.C#仍舊保留了C++的記憶體手工管理方法,它適合在速度極端重要的場合使用,而在Java中這是不允許的 21.在C#中,所有的異常都從一個名為Exception的類派生 22.列舉器即enum型別(java無),把它作為一個變數值的型別使用,從而把變數可能的取值範圍限制為列舉器中出現的值。 23.結構(Struct)與類很相似,而結構是一種值型別,它儲存在棧中或者是嵌入式的,結構可以實現介面,可以象類一樣擁有成員,但結構不支援繼承 24.屬性宣告語法的第一部分與域宣告很相似,第二部分包括一個set過程和/或一個get過程 25.傳值方式: 在java中簡單資料型別的值傳參時,都以傳值方式; 在c#中如果加ref則會以引用的方式傳值(方法內部改變該引數,則外部變數一起跟著變); 加out與ref基本相同,但out不要求引數一定要初始化. 26.c#保留了指標。unsafe 27.代理:代理(delegate)可以看作C++或者其他語言中的函式指標 代理用來封裝可呼叫方法。你可以在類裡面編寫方法並在該方法上建立代理,此後這個代理就可以被傳遞到第二個方法。這樣,第二個方法就可以呼叫第一個方法。 代理是從公共基類System.Delegate派生的引用型別。定義和使用代理包括三個步驟:宣告,建立例項,呼叫。代理用delegate宣告語法宣告。

相關推薦

JavaC#的一些不同點

1.屬性: java中定義和訪問均要用get和set方法,可以不成對出現。 c#中是真正的屬性,定義時get和set必須同時出現,房問時用.號即可。不用get,set 2.物件索引 就是物件陣列

JavaC 開發上的一些差異轉換方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

關於Javac++隱藏、重寫不同實現機制的探討

tail namespace 文獻 ide archive pretty proc font 分開 一、文章來由 本人如今用c++很多其它。可是曾經Java也寫過不少,Java和c++非常像,可是深入挖一些,Java跟c++的差別非常大,就拿剛剛發的另

JAVAC++,CC++的差別

-m content 才幹 hit 沒有 span 自增 ng- data- 首先來分析JAVA與C++的差別: JAVA是純面向對象的語言,而C++是基於面向對象過程的語言。 JAVA有著垃圾回收機制。它的語法是C+&#

JavaC++語法的區別

有變 程序 mda 一次 高層 修飾 int 屬性 代碼 1. 註釋可以在Java程序中起到文檔標記的作用 類文檔標記: 1)@version 2)@author 3)@param 4)@return 5)@exception 2. Java的字符占兩個

隨筆④ javac ++/c比較

可能 隨筆 pan ont -s size 內存 span 關心 Java和C/C++的比較 Java不支持指針,C/C++支持 Java程序不需要顯式地關心內存釋放,而C/C++需要 Java程序需要編譯成字節碼文件,然後再解釋執行。 Java數組可能溢出,C/C++數

[工作小記]JAVAC#的Socket通信

motion pmo sleep ddr trace ktr 不同的 ram target 在日常的開發中,不同的傳感器支持的開發語言常常是不同的。例如Kinect一般是用C++開發的,Leapmotion用JAVA開發比較多。 去年暑假(17年暑假)做的一個項目是:用Le

編程語言吐槽之JavaC

編程語言 用途 評價 語言 計算 競爭力 理念 部署 direct 包含各種偏見和武斷,請謹慎閱讀。 為什麽在學校學習的C,拿到企業生產中不起作用? 而為什麽企業級的程序員,依然對C/C++無法掌控?在算法各方面不夠精湛? 根本原因還是應用場景的不同。企業級的開發

(四)NDK開發之 java C/C++ 程式碼互相呼叫

java 呼叫c/c++ 的方法,很簡單。我們勾選建立支援C/C++ 專案的時候,就已經生成了一個Demo 下面主要介紹,C/C++ 呼叫 java 的方法。   一、訪問 java 成員非靜態成員變數: JNI 呼叫java非靜態變數的 方法名格式 : Ge

JavaC/C++有什麼異同

1、Java為解釋性語言,執行過程為由編譯器將Java程式碼轉換為位元組碼,然後由虛擬機器解釋執行。      C/C++為編譯型語言,原始碼經過編譯和連結生成可執行的二進位制程式碼。因此,Java的執行速度比C/C++慢,但是Java能跨平臺,C/C++不行。

JavaC++

Java與C++都是面向物件的語言,都使用了面向物件的思想(封裝、繼承、多型),由於面向物件由許多非常好的特性(繼承、組合等),因此二者有很好的可重用性。 主要不同點: 1、Java為解釋性語言,其執行過程為:程式原始碼經過Java編譯器編譯成位元組碼,然後由JVM解釋執行。而C/C++為編

Android中JNI使用詳解(4)---JavaC之間資料型別轉換

Jni中基本型別轉換對應的表格 Java型別 本地型別 說明 boolean jboolean 無符號,8位 byte jbyte

JavaC 個人之比較

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

晚期(執行期)優化——JavaC/C++編譯器比較

文章目錄 單從編譯和執行上講為什麼說C/C++編譯器比Java編譯器快? 因為Java中的即時編譯器是要佔用使用者程式的執行時間的。 Java是一門型別安全的語言,會進行很多的檢查行為。如陣列是否越界、檢查空指標等 雖然java中沒有vir

Java C++ 的區別

Java 與 C++ 的區別 Java 是純粹的面嚮物件語言,所有的物件都繼承自 java.lang.Object,C++ 為了相容 C 即支援面向物件也支援面向過程。 通過虛擬機器從而實現跨平臺特性 指標 自動垃圾回收 多重繼承 操作符過載 goto

如何一步步實現JAVAC# AES加密結果相同

實現JAVA與C# AES加密結果相同 最近公司開發一個電池溯源的介面,對方給的是一個java的demo,使用的是AES加密,但是我們的整合平臺是使用C#開發的,所有必須把java中的AES加密方法改成C#實現。對方給的demo如下 /**

利用Thrift使JavaC#進行通訊

struct UserProfile{ 1:i32 id, 2:string name, 3:string blurb } service UserStorage{ vo

javac++區別

1、指標 C++ 有指標和引用,C++基礎中指標型別和引用型別同等地位重要。C#和java去掉了C++中的難點:指標(可以通過某些方法變相獲得:高階程式設計)保留了引用 C++ 的this關鍵字是一個指標,指向當前物件,所以你會看到用this指標操作類成員使用的是 thi

雜談---javac++有什麼不同

Java並不僅僅是C++語言的一個變種,它們在某些本質問題上有根本的不同:    (1)Java比C++程式可靠性更高。有人曾估計每50行C++程式中至少有一個BUG。姑且不去討論這個數字是否誇張,但是任何一個C++程式設計師都不得不承認C++語言在提供強大的功能的同時也提

Android JNI中JavaC++物件如何建立一一對應的關係

Android JNI中Java與C++物件如何建立一一對應的關係 環境 系統:Mac OSX IDE:android studio 3.0 1.JAVA物件持有C++物件的指標 在java類中建立long型別的變數如(long mNativeStudent )