C#和Java在语法上的差异(原创,持续更新中)
1.switch C#一直支持String类型 Java直到1.7才支持
2.C#里String有Length属性 Java里是Length方法
3.C#中修饰class的sealed效果与Java的final相当(有待细细研究),Java没有sealed修饰符,C#没有final
4.C#中的方法参数支持ref/out(引用传递),Java没有
5.特别注意:在String对象中,C#里的"=="是比较值相等,和equals是等效的;而Java中"=="是表示引用相等,equals表示值相等
//Java public static void main(String [] args) { String s1 = "12"; String s2 = new String("12"); String s3 = "1"; String s4 = "2"; String s5 = s3 + s4; String s6 = "1" + "2"; System.out.println(s1==s2); System.out.println(s1==s5); }
输出均为false
//C# static void Main(string[] args) { String s1 = "12"; String s3 = "1"; String s4 = "2"; String s5 = s3 + s4; //String s6 = "1" + "2"; Console.Write(s1.Equals(s5)); Console.Write(s1==s5); } 输出均为true
6.C#中的接口不能带有属性成员,而Java可以;在C#中显式地对接口方法使用public也是非法的,而Java却可以。
7.C#中无法被继承的类:sealed类和static类,Java中是final类
8.Java中String类有charat方法,C#没有
System.out.println(s.charAt(5));
9.Java中的泛型在编译过程中会被擦除类型,再被调用时才做类型的转换,这相对于C#中产生了新类型的泛型而言,是一种“伪泛型”
10.C#中并没有HashMap,Java中没有Dictionary
11.关于override,C#中必须是有vitual、abstract、override修饰的方法才可以被override,Java则没有此限制;此外,Java中可以省略 但基于@Override的对方法名检查作用以及代码的可读性考虑 我们一般会写上 而在C#中override是不可省略的
12.在异常处理中,C# 没有throws的用法
如有错误请指正