• C#和JAVA语法区别


    < > <= >= instanceof(Java特有)
    解释,当你拿到一个对象的引用时(例如参数),你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,使用instanceof操作符判断,第一个结果为true的类即为引用真正指向的类。


    在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对
    类进行管理。

    没有像VS里的#region,#endregion一样的代码段区域

    java中声明”属性”:
    //声明两个私有字段
    private String name;

    private int age;

    //分别实现set和get方法
    public void setName(String name)
    {
    this.name= name;
    }

    public String getName()
    {
    return this.name;
    }

    public void setAge(int age)
    {
    this.age= age;
    }

    C#

    private string name;

    private int age;

    //方法一:声明访问器
    public string Name
    {
    set { this.name = value; }
    get { return this.name; }
    }

    public int Age
    {
    set { this.age = value; }
    get { return this.age; }
    }

    java中定义和访问均要用get和set方法,可以不成对出现。

    c#中是真正的属性,定义时get和set必须同时出现,房问时用.号即可。不用get,set

    C#中,不用任何范围修饰符时,默认的是protect,因而不能在类外被访问.

    因为JAVA规定,在一个文件中只能有一个public类,而且这个类的名称必须与文件名一模一样,这是一个区别

    对于for循环,java和C#的用法是一样的,但是foreach语句在java中的形式是不同的,

    public static void main(String[] args){
    int[] array1={1,2,3,4,5};
    for(int item:array1){
    System.out.println(item)
    }

    }

    public void Main(string[] args)
    {
    foreach(int item in array1){
    Cosole.WriteLine(item);
    }
    }

    C#中的==与java的==是不一样的,java的==只能比较对象的引用
    比如:“1”==1.ToString(),这在C#和java中的结果就不一样了


    C#还新增了四种整型,分别是sbyte,ushort,uint,ulong

    Java和C#一样,都是强类型(即类型明确)语言,所以当遇到不同数据类型同时操作时,就需要进行数据类型转换。

    在C#中方法名一般用pascal帕斯卡命名法,即每个单词首字母都大写,而在java中,方法名一般用camel骆驼命名法,即第一个单词首字母小写,后面的单词首字母都大写。

    可以看出,访问修饰符的概念java和C#差不多,只不过C#中不仅包括以下三种修饰符,还包括更多的修饰符比如internal等。另外,有一个概念的区别需要我们注意,java中的包(即jar包),在C#中一般称为程序集(即dll)。


    在java中类实现接口使用implements关键字,实现继承使用extends,而在.net中是用符号”:”来实现的

    Package这个是java独有的,而import有点类似于.net中的using。

    java与.net不同的是,在java中引用父类用super,而在C#中则使用base。

    C#中的访问修饰符与Java中的基本对应,但多出了一个internal。internal:成员只能从同一程序集的内部访问。

    由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词

    JAVA的接口可以定义变量
    interface abc
    {
    int num=1;
    }

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

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

    接口的不同

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

    数组定义的区别
    int myInt[][]=new int[5][10]; JAVA
    int[,] myInt=new int[5,10]; C#


     三大特性-封装

      封装:为了隐藏内部的实现细节,达到对数据安全性的保护和代码重用的效果的一种手段。

      封装无处不在,看似简单却可无限延伸。并没有一个明确的关键字来表示封装。既然是思想,是手段,所有在java中和c#中是没有语法区别的。仅仅是他们在借助访问修饰符来达到封装的效果时,两种语言的访问修饰符是不一样的。

      Java中:

      private:私有的,仅内部可以访问

      dufault:默认的,同一包的内部可以访问。

      protected:受保护的,同一包中或者是不同包的子类中可以访问。

      public:公共的,任何地方可以访问。

      特点:有明确的大小统属关系:private < default < protected < public

      C#中(引入程序集的概念。命名空间类似于java中的包,但它是逻辑分组不同于java中的包是物理分组,程序集类似于一个项目):

      private:私有的,仅内部可以访问。

      intenal:内部的,同一程序集的内部可以访问,同default。

      protected:受保护的,子类中可以访问,和java中protected是不同的,此处范围要小些,同程序集的非子类不能访问。

      proteted intenal:是intenal和protected访问范围的并集。

      public:公共的,任何地方可以访问。

      特点:没有明确的大小统属关系,intenal和protected的访问范围大小是分不清的。


    Java中:使用extends表示使用继承

      重写的要求:a、方法名、返回值类型、参数相同;b、访问修饰符访问范围要大于或等于父类方法访问修饰符;

      访问父类成员:使用super关键字,可使用super(参数);在构造方法中指定调用父类一个构造方法。

    三大特性-继承
      C#中:使用:表示使用继承

      重写的要求:a、方法名、返回值类型、参数、访问修饰符相同;b、父类方法被virtual修饰,子类方法被override修饰

      访问父类成功:使用base关键字,在构造方法后使用:base(参数);指定调用父类构造方法,base不能使用在静态环境中,不能调用父类静态成员。

      覆盖:使用new关键字。在c#中引入覆盖的内容,对父类的非virtual方法,也就是不可重写的方法,使用覆盖,可以覆盖掉父类的方法。对覆盖我的看法是为了弥补必须被virtual修饰的方法才能重写这个限制可能带来的问题,但是能不用就不用,覆盖意义不大,或者说是我还没有真切体会到覆盖的实际作用和使用场合,有高人可以评论解惑。

      判断是否重写成功的依据:使用父类的引用指向子类的对象,如果该方法调用的是父类方法说明重写不成功,如果调用到子类方法,说明重写成功。


    Java C# .net 和 C C++ 跨平台的区别

    1、windows系统WP8上主要支持 VB, C#, c/c++,

    2、苹果系统ios上支持 object-c, c/c++

    3、android系统上支持 java, c/c++
    2、
    C# .net Java的跨平台是指它们在“编译系统”生成的中间文件的字节码(byte code)文件不需要重新编译,就可以直接被“运行系统”使用;

    C/C++的跨平台是指不要重新写代码,需要重新编译成“运行系统”对应的机器码(binary code)后,才能够被“运行系统”使用;

    3、
    ava, C#的跨平台受“虚拟机”的限制,如:

    1、.net环境只在windows上有,linux(Android)和unix(ios)都不支持;

    2、Java手机平台主要是Android支持,windows(WP8)和mac(ios系统)都不支持;

    3、.net ,和Java虚拟机在xp系统上默认是没安装的;

    4、xp系统不支持.net的高版本,如.net 4.5

    c/c++不受虚拟机的限制,只要能够编译成“运行系统”的“机器码”即可,这也是为什么现在大量的跨平台应用开发采用c/c++的原因;

  • 相关阅读:
    leetcode 347. Top K Frequent Elements
    581. Shortest Unsorted Continuous Subarray
    leetcode 3. Longest Substring Without Repeating Characters
    leetcode 217. Contains Duplicate、219. Contains Duplicate II、220. Contains Duplicate、287. Find the Duplicate Number 、442. Find All Duplicates in an Array 、448. Find All Numbers Disappeared in an Array
    leetcode 461. Hamming Distance
    leetcode 19. Remove Nth Node From End of List
    leetcode 100. Same Tree、101. Symmetric Tree
    leetcode 171. Excel Sheet Column Number
    leetcode 242. Valid Anagram
    leetcode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/huweidong/p/5123523.html
Copyright © 2020-2023  润新知