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
Java(C#)基础差异-语法的更多相关文章
- Java(C#)基础差异-数组
		1.填充数组 Java 数组填充替换方法Arrays.fill() 举例如下: import java.util.Arrays; public class FillDemo { public stat ... 
- Java最最基础的语法小结
		一定得记住,不然吃大亏了真的 注意不可同时运行,每次只能运行一个类型 package aad;///建根文件的时候选择了这一项就要写,没选择可以不用写 import java.io.*; import ... 
- Java SE基础知识
		Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ... 
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
		前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ... 
- 二、JAVA基础、语法
		第二节:JAVA基础.语法 1.修饰符.变量: Java中主要有如下几种类型的变量 局部变量 ... 
- JAVA 基础基本语法---常量与变量
		JAVA 基础基本语法---常量与变量 语法:计算机能够识别的语言的规则: 0. 基本语法 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hel ... 
- Java基础概念语法
		Java基础概念语法 注释 单行注释 //行注释说明 多行注释 /* 多行注释说明 */ 文档注释 /** *@author 程序的作者 *@version 源文件的版本 *@param 方法的参数说 ... 
- 学习java之基础语法(三)
		学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ... 
- 学习java之基础语法(一)
		学习java之基础语法(一) 基本语法 编写 Java 程序时,应注意以下几点: 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的. 类名:对于所有的类来说 ... 
随机推荐
- 【Java】 大话数据结构(4) 线性表之循环链表
			本文稍微介绍了一下循环链表. 将单链表终端结点的指针域由空指针改为指向头结点,形成一个环,这种头尾相接的单链表称为循环列表. 循环列表的结构如下图所示: 循环链表的优点:可以从任意一个结点出发,遍历所 ... 
- hibernate Validator 6.X 的学习,bean的约束(字段,get方法上的验证)
			一:背景说明 验证数据是一个常见的任务,它贯穿于所有应用层,从呈现到持久层.通常在每个层中都执行相同的验证逻辑,耗时且容易出错.为了避免这些验证的重复,开发商往往把验证逻辑直接进入的领域模型,在领域类 ... 
- ref:Spring JdbcTemplate+JdbcDaoSupport实例
			ref:https://www.yiibai.com/spring/spring-jdbctemplate-jdbcdaosupport-examples.html 在Spring JDBC开发中,可 ... 
- 如何启用内置的Win10 OpenSSH客户端(转)
			如何启用内置的Win10 OpenSSH客户端 关注Windows10,锁定Win10之家(http://www.ghost580.com/windows10/) 如何启用内置的Win10 OpenS ... 
- CSS选择器优先级(转)
			原文:http://www.cnblogs.com/wangfupeng1988/p/4285251.html 另外,w3c有文章介绍了CSS选择器的特定性,见https://www.w3.org/T ... 
- C#开发Unity游戏教程之使用脚本变量
			C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. ... 
- mount: unknown filesystem type 'vboxsf'  centos ubuntu 处理方案
			Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem " ... 
- j.u.c系列(09)---之并发工具类:CyclicBarrier
			写在前面 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).因为该 barrier 在释放等待线程后可以重用,所以 ... 
- 狗日的系统之家下载的Windows 10 1803/1809系统不干净,捆绑自动安装腾讯关键等软件
			特此记录一下,如果网友看到这篇文章请不要下载它们家的,捆绑软件,并且安装自动设置了账号,这还不是修改,是啥? 我们都知道现在iso文件基本都是网友自行制作的,从微软下载的文件自行制作成iso,也就是现 ... 
- php开发之命名规则
			类命名 1.使用大写的字母作为词的切割,其它字母均使用小写字母 2.名字的首字母使用大写字母 3.不要使用下划线"_" 类属性的命名 1.属性的命名应该以'm'为前缀 2.前缀'm ... 
