浅谈Java 和 C# 的语法区别(基础向)

最近在学习Java。之前一直是做的.NET开发,用的C#,正好最近有空闲时间,就看了看一直想了解的Java。

都说C#和Java很是接近,看了几天的书,发现确实如此,基本该有的东西两边都有,内容都大同小异,不过C#到底是占了后出来的便宜,很多地方比Java封装得更方便些。当然,这不是重点,简单的几天学习,虽说总体相近,但处处还是透露着不同,本着随手做一做读书笔记心态,大概收集了些简单的,大抵是些语法上的不同。

因为本身就是初学者,有错误的地方还望指正,谢谢。

 

Java

C#

常量

使用 final 关键字

(const作为保留关键字,没有使用)

使用const 关键字

==

在对比string的时候,只能对比两个string是否引用同一位置,对比值是否相等的正确做法应该使用equals()方法

C#中的string重载了== 操作符,使其在内部调用了equals方法,所以可以直接使用于对比值

goto 语句

goto虽然作为保留字,但是并没用使用。

可以使用,但是不推荐,通常goto语句被认为是一种拙劣的程序设计风格。

break

除了中断当前的控制流程外,Java还支持带标签的break。

 

label:

{

       While(XXX)

            {

                  While(XXXXX)

                      {

                             //退出循环语句块

                             break label;

                      }

            }

}

//会直接跳到这里

 

某种程度上说,这是goto语句的一种替代,但是只能跳出语句块,不能跳入

只能跳出当前的break关键字所在的语句块。

运算符重载

不支持

支持,但不是全部

在构造函数中调用其他构造函数

直接使用this(参数)调用

在当前构造函数的方法签名后使用:this(参数)调用

包与命名空间

(两者类似,但是又不相同)

包,使用package

同时使用import导入类

命名空间,使用namespace

同时使用using导入类

继承关键字

使用extends

使用 :

调用父类构造函数

使用super(参数)调用

在构造函数的方法签名后使用: base(参数)调用

调用父类方法

使用super.方法名(参数)

使用base.方法名(参数)

方法的重写

直接重写,使用相同的方法签名。方法默认动态绑定,即为所有方法创建方法表。

 

使用final关键字,可以使方法无法在子类中被重写

使用同样的方法签名,同时使用override 关键字,且父类需要重写的方法必须是虚方法virtual关键字,或者为抽象方法abstract关键字。且只为这些方法创建方法表。

 

没有声明为虚方法或者抽象方法的方法,无法在子类中被重写

 

类型判断

使用instanceof

使用is

访问修饰符

除相同修饰符外,默认为对本包可见,没有修饰符

除相同修饰符外,默认为对相同命名空间可见,可以显式使用internal关键字

定义封闭类(不可被继承)

使用final关键字

使用sealed关键字

可变参数方法

方法名(类型…参数名){}

方法名(params 类型[] 参数名){}

猜你喜欢

转载自www.cnblogs.com/junyusblog/p/12198613.html
今日推荐