• 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#简便。

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

  • 相关阅读:
    HMM 学习一
    matlab buffer的使用
    JDK环境变量配置及Tomcat安装服务
    Js参数RSA加密传输,jsencrypt.js的使用
    Dapper基本增删改查
    Dapper事务操作
    Ubuntu知识记录
    InstallShield 覆盖安装
    Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
    Sql Server导出表结构Excel
  • 原文地址:https://www.cnblogs.com/Persistence/p/3442176.html
Copyright © 2020-2023  润新知