从编码层面对比java和c#

java和c#都是面向对象编程高级语言,整体上来说,它们仍是很类似的,由于它们在发展过程当中都很大程序上学习了对方很多优秀的特性。因此,通常来讲,从其中一门语言转换到另一门语言应该都不会有很大问题。html

虽说这两门语言很类似,但仍是有一些不一样点,若是咱们可以掌握这些不一样点,则能够更加容易的实现两门语言之间的切换,编写出更加专业的代码。java

以前写过一篇文章(从Java转向.NET/C#,Are You OK?),从highlevel层面对比了java和.net/c#两个技术栈,经过这篇想必你们对.net/c#技术栈会有一个比较全面直观的认识。接下来从编码角度对这两门语言进行一个对比,这些也应该是一个Java程序员转为c#程序员刚开始最须要适应和理解的点:程序员

编码风格

1.c#里面方法命名建议大写打头,follow pascal case;而java里面方法名是小写打头,follow camel case。编程

2.c#里面常量命名follow pascal case;而java里面常量命名单词全大写,单词之间用下划线链接。c#

3.c#里面左右大括号都独立成一行;java里面左大括号不独立成一行。oracle

语法层面

1.java里面有pacakge的概念;c#里面对应的是namespace。ide

2.java里面引入某一个package下面的类,用import;c#里面对应的是using。函数式编程

3.java里面继承父类和实现接口分别是extend和implement;c#里面都用冒号(:)。函数

4.java里面调用父类方法用super;c#里面对应是base。学习

5.java里面定义一个immutable类用final;c#里面对应是sealed。

6.java里面防止方法被重写用final;c#里面对应是sealed,在多重继承复写方法的场景可能会用到。

7.java里面public或protected方法默认都是能够被重写;c#里面默认都是不可被重写,若是要可被重写,须要加virtual标明。

8.java里面子类复写方法用@Override标注;c#里面则是用override关键字。

9.java里面定义常量用final static;c#里面对应是const。更加准确的说,java里面的final对应c#里面的readonly,java里面的final static对应c#里面的const。

10.java里面有checked exception和non-checked exception(RuntimeException)之分;c#里面只有non-checked exception。

11.java里面的annotation概念;c#里面对应的是attribute。

12.java里面可变参数是...;c#里面对应是params。

13.java里面一个java文件只能包含一个public class,而且文件名要和类名相同;c#则没有这个限制,能够包含多个public class。

14.c#里面有property(属性)概念;java里面没有,但可用getter/setter方法替代。

15.c#里面有delegate(委托)概念;java里面没有。委托,表明一个方法的引用,是c#一开始就有的概念,和后来新增的lambda概念相似,都是对函数式编程(一个显著特征就是:函数能够做为参数传递)的支持。java是到了java 8才支持lambda,在以前若是有传递函数的场景,都是经过匿名类来实现。

16.c#里面有extension method(扩展方法)概念;java里面没有。扩展方法,正如其名,能够实现对标准方法的扩展。参考个人另一篇文章(从Java转向.NET/C#,Are You OK?)。

17.c#里面能够直接用@打头实现一个string的转义。

18.c#里面能够用int?表示一个可为null的int变量(here int is primitive type);java里面只能用Integer。

References

相关文章
相关标签/搜索