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 是不同的. 类名:对于所有的类来说 ...
随机推荐
- MySQL 实现将一个库表里面的数据实时更新到另一个库表里面
MySQL 实现将一个库表里面的数据实时更新到另一个库表里面 需求描述:MySQL 里面有很多的数据库,这些数据库里面都有同一种表结构的表 (tb_warn_log),这张表的数据是实时更新的,现在需 ...
- 024 Yarn核心生态系统
1.Yarn核心生态系统 2.Tez Tez是Apache最新的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能. 3.solo 全文检索 也可以部署在 ...
- spring boot 2.0.3+spring cloud (Finchley)6、配置中心Spring Cloud Config
https://www.cnblogs.com/cralor/p/9239976.html Spring Cloud Config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, ...
- QT5 QSS
设计Qt程序Ui的时候,可以像WEB端使用CSS一样,使用QSS,使页面美化跟代码层分开,利于维护. 过程如下: 1.建立文本文件,写入样式表内容,更改文件后缀名为qss: 2.在工程中新建资源文件* ...
- 洛谷AC200纪念
- P1102 A-B数对
P1102 A-B数对用map过掉,可以当高效的桶排用,map<long long,int>m;意思是m[long long]==int; #include<iostream> ...
- 利用HTML5定位功能,实现在百度地图上定位(转)
原文:利用HTML5定位功能,实现在百度地图上定位 代码如下: 测试浏览器:ie11定位成功率100%,Safari定位成功率97%,(add by zhj :在手机上测试(用微信内置浏览器打开),无 ...
- 007.SMB其他应用
一 目录权限 系统权限需要对共享目录生效 samba服务器权限也会对共享目录生效 当用户过多权限交叉的时候,建议使用系统权限控制共享目录权限,而不建议采用samba权限来控制 例如: [work] p ...
- 捕获程序异常之onerror
问题描述:html5页面在电脑上打开,功能正常,没有报错,一旦嵌进微信或者APP,页面就卡住了,不好排查js问题. 预期结果:手机微信页面功能失效时,开发人员在console面板能明确看到出错信息,出 ...
- 24.python中类的方法
类中的方法,其实就是类中的函数,可以分为:实例方法,类方法,静态方法.方法和字段一样,也是属于类的属性,所以也具有运行中修改的特效, 但一般不推荐这样做. 我在类的基本语法中,介绍了构造器方法:__i ...