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...aSystem.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的a1System.out.println("调用a1的值为:" + testObj1.a1);// 调用定义为static final的a2System.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 零基础教程,看完就会,建议收藏
如果你不懂Java 并且想认真学习接触了解一下Java的语法,建议把这篇文章收藏了,多看几遍,应该可以初步掌握Java 大部分基础的语法 . 让我们出发吧!ps:本文有点长,耐心阅读 . 〇,编程环境 ...
- Java复习总结(二)Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 进阶 线程 锁 JDK 反射 JVM GC io操作和NIO,AIO ...
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- java的基础语法是什么_java语法基础
java语法基础 引导语:作为一门计算机语言,Java也是有语法的,以下是百分网小编分享给大家的java语法基础,欢迎阅读! java语法基础: 1,关键字:其实就是某种语言赋予了特殊含义的单词. 保 ...
- java字节型的关键字_DAY06-07 Java的基础语法-注释、标识符、关键字、数据类型
Java的基础语法 注释 注释不会被执行,是给人看的 书写注释是一个非常好的习惯. 注释类型: (1)单行注释:// 注释内容 (2)多行注释:/ * - 注释内容-. * / (3)文档注释:/* ...
- 大数据必学Java知识(一):Java基础入门语法和安装
Java基础入门语法和安装 1. Java概述 1.1 Java语言背景介绍(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应用) 2. ...
- Java学习基础语法
Java 开发环境配置 Java 基础语法 Java 对象和类 Java 基本数据类型 Java 变量类型 Java 修饰符 Java 运算符 Java 循环结构 Java 分支结构 Java Num ...
- (Java零基础学习笔记)第二章 Java中的基本语法
前言: 大家好! 我是BA unravel .如果你想和我一起学习JAVA,欢迎大家一起来学习这个世界上最好的语言! 学习目标: 一周掌握 Java 入门知识 学习内容: 1. 搭建 Java 开发环 ...
- 狂神Java面试题总结:基础及语法169道
狂神Java面试题总结:基础及语法169道 收集整理:秦疆 联系方式QQ:24736743 微信:qinlvejiang 答案来源收集与互联网,部分内容经供参考,代码全部为手写验证通过. 1~20 1 ...
最新文章
- this.options[selectedIndex]的使用
- unittest安装教程_unittest框架与自动化测试环境的搭建
- python爬取小说章节信息用pygame进行数据显示_爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)...
- Rest.Ler PHP API Server解决方案
- 1011:甲流疫情死亡率
- 哈·曼丁的故事(三)
- ansible 并发设置_如何使用Ansible通过Prometheus设置系统监视
- Ubuntu免密码输入关机脚本
- 昆仑mcgs 通讯控制台达B2伺服采用modbus rtu方式
- 熊猫聚财独家揭秘-你不知道的避坑赚钱宝典
- 微型计算机硬件系统基本组成一般应用包括,计算机系统的基本组成,一般应包括哪些...
- qq大学认证如何修改随意修改认证内容
- Vendor NDK
- android获取键盘状态,Android获取屏幕方向及键盘状态的小例子
- java war启动慢_解决springboot war包在tomcat部署时启动慢的问题
- @media媒体查询
- Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider
- ubuntu10.04安装sopcast-player网…
- vcg函数值_简单介绍几种函数信号发生器的原理图及不同功能设计
- 北京尚学堂--单例模式笔记
热门文章
- Redis sorted set 类型操作及常用命令
- Android 第六课 4种基本布局之LinearLayout和Relativelayout
- 学习ui设计_如果您想学习UI设计,该怎么办
- 《JavaScript模式》读书笔记一:基本技巧
- cannot find -lunwind-x86_64
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
- Java四种线程池的使用
- 如何在Lua与C/C++之间实现table数据的交换
- TableView详解
- 监控主机安装需要材料