1、C# 和 Java 都需要编译成中间代码,因此Java和C#性能上通常不如C++这类编程语言。(Java由javac编译成字节码,然后再由解释器逐条将字节码解释为机器码来执行。C#通过特定语言编译器将代码编译成 IL( intermediate language),然后通过 JIT(Just In Time) 将IL 翻译成机器码来执行。)
2、C# 和 Java 都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想。
3、C# 和 Java都支持跨平台。
4、C# 中的异常处理与 Java 非常相似。C# 可以用 try...catch 构造来处理运行时异常,这和 Java 中是完全一样的。System.Exception 类是所有 C# 异常类的基类。(但C#一个catch只能捕获一个异常。)
5、C# 和 Java 都提供自动垃圾回收功能,从而使编程人员避免了跟踪分配的资源。
6、C# 和 Java 都支持单一继承和多接口实现。
7、C# 和 Java 都支持强引用和弱引用。
8、C# 和 Java 都支持lambda表达式。
1、Java的源文件名必须和类名一致,而C#没有这个要求(但建议一致)。
2、C#中的命名空间是namespace类似于Java中的package,在Java中入包用import而C#中用using。
3、C# 和 Java 的数据类型基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。
5、Java中常量用 static final修饰。在C#中,常量用const关键词声明。
6、Java中继承用关键字extends,而c#用":",调用父类的构造方法Java用super关键字,而c#用base关键字。
7、C# 和 Java 接口都用关键字interface定义,Java实现用关键字implements;c#用":"实现。在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。
8、C#中的访问修饰符与Java中的基本对应,但多出了一个internal。
9、C#没有高精度的decimal,Java中有BigDecimal。
10、C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词密封。
11、C#跟Java控制流语句类似,还有c#中的switch如果case后面有内容必须要有break;Java可以没有break;
12、C#中允许有指针,Java中无指针。
13、在Java中,数组的声明方法非常灵活,实际上有许多种声明方法都属于合法的方法。例如,下面的几行代码是等价的:
int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
但在C#中,只有第一行代码合法,[]不能放到变量名字之后。