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类型

基本上也是相同的

直接上图

 

 

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(我就不做例子)

  

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

    

  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,接口继承接口通过extends   C# 都是通过":"

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

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

    //非静态代码块
	{
		System.out.println("非静态代码块");
	}
	//静态代码块
	static
	{
		System.out.println("静态代码块");
	}    

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

6.接口的不同

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

  java可以这样定义

public interface Runner {
        int id = 1;
        public void start();
        public void run();
        public void stop();
}

7. 异常

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

java中这样的写法:

class A{
    void method () throws FileNotFoundException{
        
    }
}

 

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

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

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

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

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

 

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

 

 

 

 

posted @ 2013-11-26 10:35  有梦想不放弃  阅读(1245)  评论(5编辑  收藏  举报