c#和java的区别_C#和java的语法区别

通过这几天,看java视频,总结了一下java与C#的部分语法区别。

1.基本类型

Java是由byte,short,int,long,float,dboule组成,所有类型都是有符号的。

C#除了这些以外,还包括sbyte(有符号) uint,ulong等,还有decimal(java中没有)

java中的byte是从-128到127(有符号),而C#中的byte是0-255 (无符号)

注意:

赋值给float类型是,值后面一定得带"f"或者"F",否则编译不过去,因为系统默认是dboule类型。

2.String类型

基本上也是相同的

直接上图

6d30e7673260bc73afda255aa91a1c44.png

ef42928e78d95c34d0b3056463c7ff49.png

java中比较字符串建议使用equals,C#中两个都可以。

如果Java像这样

String s1="abc";

String s2="abc";

那么返回的都是true了。因为java和C# 对于字符串来说都有驻留池的概念。

3. 操作符

java与C#唯一的不同就是 java多了一个>>>操作符(被移位二进制最高位无论是0或者是1,空缺位都用0补)

4.流程控制

流程控制包括选择结构(if else  switch  while,),循环结构 (for) 基本相同的.

不同点包括以下几个方面

4.1 java有一个特殊的控制语句,C# 是没有的。(当然C#通过一些技巧变成方法实现这种控制。具体大家可以自己试着做,这个在开发中应用不大。)

break,continute语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

label1:   {   ……

label2:           {   ……

label3:  {   ……

break label2;

……

}

}

}

4.2 C# 有个goto关键字(参考),java中的goto是保留字,似乎没有用的。

5. 类

java与C#的使用方法上基本相同。

不同点包括以下几点

5.1 如果类中的方法和变量没有修饰符,java中同一个包中的类可以访问,C# 默认为private(我就不做例子)

ef2270a6782a5fd2a0f4e1575f781359.png

5.2 静态方法,静态变量  java中可以通过类,也可以通过对象访问(基本上也都通过类来访问),但是C# 只能通过类访问

7326239848de8ff20a06b6157a9fa0dc.png

5.3 this关键字的使用,主要是构造函数不同,

C# 写法

class TestClass

{

public string Name { get; set; }

public TestClass():this("")

{

}

public TestClass(string name)

{

this.Name = name;

}

}

java写法

public class TestClass {

private String name;

public TestClass()

{

this("");

}

public TestClass(String name)

{

this.name=name;

}

}

5.4 引用父类构造函数的不同。java是通过super关键字,C# 是通过 base关键字,使用方法上跟各自的this相同

注意:

java中this,super必须写在构造函数的第一条语句中。

5.5 继承的不同。java继承类通过extends,实现接口通过implements,接口继承接口通过extendsC# 都是通过":"

5.6 java包括静态代码块和非静态代码块,

实例化对象的时候,先执行静态代码块(等同于C#的静态构造函数),只执行一次,  非静态代码块先于构造函数执行。实例化一次就执行一次。C#没有这种写法,java写法如下

//非静态代码块

{

System.out.println("非静态代码块");

}

//静态代码块

static

{

System.out.println("静态代码块");

}

5.6 java中的方法默认都是虚拟的,子类都可以重写,而C# 必须标记为virtual才可以。

6.接口的不同

java中接口可以定义变量,C# 不可以,C# 只能是属性,方法,索引器。

java可以这样定义

public interfaceRunner {int id = 1;public voidstart();public voidrun();public voidstop();

}

7. 异常

java中的方法可以通过throws关键字来抛出异常,然后用try catch 截获。当然,也可以通过throw,C# 只能通过throw

java中这样的写法:

classA{void method () throwsFileNotFoundException{

}

}

8.java中的final关键字,final修饰类和方法的时候, 等同于C#中的sealed。

final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,等同于C#的readonly

C# 有一个const关键字,用const修饰的变量是编译时常量。显示的初始化,不能通过构造函数初始化

9.java的方法命名是Camel 标记法。C# 是Pascal 标记法。

10.java中的属性实现,必须写get和set方法。不如C#简便。

先写到这里吧,总结的还不够全面,欢迎大家补充说明。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值