C# 和 Java相同点和不同点总结

相同点:

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。

  • public:成员可以从任何代码访问。
  • internal:成员只能从同一程序集的内部访问。
  • protected:成员只能从同一程序集内的派生类访问。
  • private:成员只能在当前类的内部访问。

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#中,只有第一行代码合法,[]不能放到变量名字之后。

你可能感兴趣的:(java,c#)