用過十幾種語言,但是java和c#是最為重要的兩門。c#發明人曾主導開發了pascal和delphi,加入微軟后,參考了c++和java完成了c#和net。大家用過java或c#任意一種的,可以通過本篇文章快速掌握另外一門語言。
基礎語法
- 變量聲明:Java和C#都使用
type variableName
。 - 條件語句:Java和C#都使用
if
、else if
、else
。 - 循環:Java和C#都支持
for
、while
、do-while
。 - 數組:Java和C#都使用
int[] myArray = new int[10]
。
類和對象
- 類定義:Java和C#都使用
public class ClassName { }
。 - 對象創建:Java和C#都使用
ClassName obj = new ClassName();
。 - 構造函數:Java和C#都支持構造函數,用于創建對象時初始化對象。
- 繼承:Java使用
class Child extends Parent { }
,C#使用class Child : Parent { }
。 - 多態:Java和C#都通過方法重寫實現多態。
接口和抽象類
- 接口定義:Java和C#都使用
public interface InterfaceName { }
。 - 實現接口:Java使用
class ClassName implements InterfaceName { }
,C#使用class ClassName : InterfaceName { }
。 - 抽象類:Java和C#都使用
public abstract class AbstractClassName { }
。
訪問修飾符
- 公共:Java和C#都使用
public
。 - 私有:Java和C#都使用
private
。 - 受保護:Java和C#都使用
protected
。 - 包私有:Java默認訪問級別(無修飾符),C#使用
internal
。
異常處理
- try-catch:Java和C#都使用
try { } catch (ExceptionType e) { }
。 - finally:Java和C#都使用
finally { }
。 - 拋出異常:Java和C#都使用
throw new ExceptionType()
。
事件處理
- Java:使用監聽器(Listeners)和事件(Events)模型。
- C#:使用事件(Events)和委托(Delegates)。
泛型
- Java:使用
<T>
來定義泛型類、接口和方法。 - C#:使用
<T>
來定義泛型類、接口、方法和委托。
集合
- Java:有
java.util
包,包含List
、Set
、Map
等接口和ArrayList
、HashSet
、HashMap
等實現類。 - C#:有
System.Collections.Generic
命名空間,包含List<T>
、HashSet<T>
、Dictionary<TKey, TValue>
等泛型集合類。
并發和多線程
- Java:使用
java.lang.Thread
類和java.util.concurrent
包來支持多線程和并發。 - C#:使用
System.Threading
和System.Threading.Tasks
命名空間來支持多線程和異步編程。
文件輸入/輸出
- Java:使用
java.io
和java.nio
包進行文件操作。 - C#:使用
System.IO
命名空間進行文件操作。
特性和框架
- Java:有Spring Boot、Hibernate、Java EE等企業級框架。
- C#:有ASP.NET Core、Entity Framework等企業級框架。
應用程序入口
- Java:使用
public static void main(String[] args)
作為應用程序入口。 - C#:俺也一樣。
包和命名空間
- Java:使用
package
關鍵字定義包。 - C#:使用
namespace
關鍵字定義命名空間。
依賴管理
- Java:使用Maven或Gradle來管理項目依賴。
- C#:使用NuGet包管理器來管理項目依賴。
編譯和運行
- Java:源代碼編譯成字節碼(.class文件),運行在Java虛擬機(JVM)上。
- C#:源代碼編譯成中間語言(IL),運行在.NET運行時(CLR)上。
語言特性
- Java:支持標記接口、匿名內部類、檢查型異常等。
- C#:支持屬性(Properties)、索引器(Indexers)、事件(Events)、委托(Delegates)、異步編程模式(async/await)等。
程序集(Assemblies)
- Java字節碼:Java編譯器將源代碼編譯為平臺無關的字節碼,存儲在
.class
文件中。 - C# DLL/EXE:C#編譯器將源代碼編譯為中間語言(IL),并打包為程序集(Assembly),存儲在
.dll
(動態鏈接庫)或.exe
(可執行文件)中。