• Java(C#)基础差异-语法


    1、long类型

    Java

    long类型,若赋值大于int型的最大值,或小于int型的最小值,则需要在数字后加L或者l,表示该数值为长整数,如long num=2147483650L。

    举例如下:

    复制代码
    public static void main(String[] args) {
        /*
         * 对于long类型,若赋值大于int型的最大值,或小于int型的最小值, 则需要在数字后加L或者l,表示该数值为长整数
         */
        // 1、定义普通long类型数据
        long longnum1 = 123;
        // 2、此句会报错,因为int型的最大值为2147483647
        //long longnum2 = 2147483650;
        // 3、正确定义为
        long longnum3=2147483650L;
        System.out.println(longnum3);
    }
    复制代码

    运行结果如下,第二句会报错为:

    C#

    举例如下:

    public static void TestMethod()
    {
        long longnum3 = 2147483650;
        Console.WriteLine(longnum3);
    }

    C#下可以直接定义long类型变量并输出。

    2、foreach语句差异

    Java

    举例如下:

    复制代码
    public static void main(String[] args) {
        /*
         * foreach语句差异
         */
        int arr[] = { 1, 2, 3, 4, 5 };
        for (int x : arr) {
            System.out.println(x);
        }
    }
    复制代码

    C#

    举例如下:

    复制代码
    public static void TestMethod()
    {
        List<int> tempList = new List<int>() { 1, 2, 3, 4, 5 };
        foreach (var item in tempList)
        {
            Console.WriteLine(item);
        }
    }
    复制代码

    3、定义不定长参数

    Java

    格式为:参数数据类型...参数名称 例如:int...a

    举例如下:

    复制代码
    public static void main(String[] args) {
        // 定义不定长参数: 参数数据类型...参数名称 例如:int...a
        System.out.println("求和结果为" + add(1, 2, 3, 4, 5));
    }
    
    public static int add(int... a) {
        int s = 0;
        for (int i = 0; i < a.length; i++) {
            s += a[i];
        }
        return s;
    }
    复制代码

    C#

    举例如下:

    复制代码
    public static void TestMethod(params int[] paras)
    {
        int sumResult = 0;
        for (int i = 0; i < paras.Length; i++)
        {
            sumResult += paras[i];
        }
        Console.WriteLine(sumResult);
    }
    复制代码

    4、常量

    Java

    定义为final的数据无论是常量、对象引用还是数组,都不能被改变。

    一个被定义为final的对象引用只能指向唯一一个对象,不可以将它再指向其他对象,但是一个对象本身的值却是可以改变的。

    那么为了使一个常量真正做到不可修改,可以将常量声明为static final。

    在Java中定义全局常量,通常使用public static final 修饰,这样的常量只能在定义时被赋值。 

    举例如下:

    复制代码
    private static Random rand = new Random();// 实例化一个Random类对象
    // 随机产生0~10之间的随机数赋予定义为final的a1
    private final int a1 = rand.nextInt(10);
    // 随机产生0~10之间的随机数赋予定义为static final的a2
    private static final int a2 = rand.nextInt(10);
    
    public static void main(String[] args) {
        Demo4 testObj1 = new Demo4(); // 实例化一个对象
        // 调用定义为final的a1
        System.out.println("调用a1的值为:" + testObj1.a1);
        // 调用定义为static final的a2
        System.out.println("调用a2的值为:" + testObj1.a2);
        // 实例化另外一个对象
        Demo4 testObj2 = new Demo4();
        System.out.println("调用a1的值为:" + testObj2.a1);
        System.out.println("调用a2的值为:" + testObj2.a2);
    }
    复制代码

    运行结果如下:

    可以看出,定义为final的常量不是恒定不变的,将随机数赋予定义为final的常量,可以做到每次运行程序时改变a1的值。但是a2与a1不同,由于它被声明为static final形式,所以在内存中为a2开辟了一个恒定不变的区域,当再次实例化一个Demo4对象时,仍然指向a2这块内存区域,所以a2的值保持不变。a2是在装载时被初始化,而不是每次创建新对象时都被初始化;而a1会在重新实例化对象时被更改。

    C#

    举例如下:

    复制代码
    public const int CONST_TEST_ONE = 1;
    
    public static void TestMethod()
    {
        Console.WriteLine(CONST_TEST_ONE);
    }
    复制代码

    5、this关键字

    共性:

    (1)this关键字代表本类对象的引用,可以调用类的成员变量和成员方法;

    (2)this可以作为方法的返回值;

    Java

    举例如下:

    复制代码
    import static java.lang.System.out;
    
    public class thisDemo {
        private String studentName;
        public String getStduentName() {
            return this.studentName;
        }
        public thisDemo(String name) {
            this.studentName = name;
        }
        public thisDemo GetObject() {
            return this;
        }
    
        public static void main(String[] args) {
             thisDemo thisObj = new thisDemo("terry");
             thisDemo currentObj= thisObj.GetObject();
             out.println(currentObj.studentName);
        }
    }
    复制代码

    运行结果如下:

    C#

    举例如下:

    复制代码
    public class ThisDemo
    {
        public string StduentName { get; }
    
        public ThisDemo(string name)
        {
            StduentName = name;
        }
    
        public ThisDemo GetObject()
        {
            return this;
        }
    }
    复制代码
    复制代码
    static void Main(string[] args)
    {
        SyntaxDesc.ThisDemo thisObj = new SyntaxDesc.ThisDemo("terry");
        var currentObj= thisObj.GetObject();
        Console.WriteLine(currentObj.StduentName);
        Console.ReadKey();
    }
    复制代码

    运行结果如下:

    从两例可以看出,我实例化了一个对象,并传递了学生姓名(StudentName)值,随后通过调用GetObject获得this对象。根据打印的结果可以看出,this引用的就是本类当前的对象。

    差异:

    (1)Java中,this可以调用类中的构造方法。但使用这种方式需要注意的是只可以在构造方法的第一句使用this调用另外的构造方法。

    Java

    举例如下:

    复制代码
    public class ThisDemoTwo {
    
        public ThisDemoTwo() {
            this("terry_test");
            System.out.println("无参构造方法");
        }
    
        // 定义有参构造方法
        public ThisDemoTwo(String name) {
            System.out.println("有参构造方法" + name);
        }
    
        public static void main(String[] args) {
            ThisDemoTwo obj=new ThisDemoTwo();
        }
    
    }
    复制代码

    运行结果如下:

    C#

    不可以 

    6、导入API类库

    (1)导入包(导入命名空间)

    Java

    语法如下:

    import关键字的语法如下:

    import com.terrydemo.*; //指定com.terrydemo包中的所有类在程序中都可以使用   

    import com.terrydemo.Math; //指定com.terrydemo包中的Math类在程序中可以使用

    在使用import关键字时,可以指定类的完整描述,如果为了使用包中更多的类,可以在使用import关键字指定时在包指定后加上*,这表示可以在程序中使用包中的所有类。

    注意:当使用import指定了一个包中的所有类时,并不会指定这个包的子包中的类,如果用到这个包中的子类,需要再次对子包作单独引用。

    C#

    语法如下:

    using System.Text;

    using System.Threading.Tasks;

    (2)导入静态成员

    Java

    语法如下:

    使用import导入静态成员的语法如下:

    import static 静态成员

    举例如下:

    复制代码
    package syntaxdesc;
    import static java.lang.Math.max; //导入静态成员方法
    import static java.lang.System.out;//导入静态成员变量
    
    public class ImportTest {
        public static void main(String[] args) {
            //在主方法中可以直接使用这些静态成员
            out.println("1和4的较大值为:"+max(1,4));
        }
    }
    复制代码

    C#

    语法如下:

    在C#6.0之前是无法实现的,在C#6.0中新增了相关语法,如下:

    using  static  静态类命名空间

    举例如下:

    复制代码
    using static System.Math;
    
    namespace JavaVSNet.SyntaxDesc
    {
        public class UsingTest
        {
            public int X { get; } = 2;
    
            public int Y { get; set; } = 1;
    
            public int GetMax
            {
                get { return Max(X, Y); }
            }
        }
    }
    复制代码

    Code

    JavaCode-->JavaVSNet/syntaxdesc

    C#Code-->JavaVSNet/SyntaxDesc

    from: https://www.cnblogs.com/SimplePerson/p/6395554.html

  • 相关阅读:
    安装lnmp 时如何修改数据库数据存储地址及默认访问地址
    ubuntu 设置root用户密码并实现root用户登录
    解决ubuntu 远程连接问题
    linux 搭建FTP服务器
    PHP 根据ip获取对应的实际地址
    如何发布自己的composer包
    使用composer安装composer包报Your requirements could not be resolved to an installable set of packages
    laravel 框架配置404等异常页面
    使用Xshell登录linux服务器报WARNING! The remote SSH server rejected X11 forwarding request
    IoTSharp 已支持国产松果时序数据库PinusDB
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/10016869.html
Copyright © 2020-2023  润新知