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的用法
 
 
 
如有错误请指正
原文地址:https://www.cnblogs.com/alden-it/p/6277659.html