JavaC#语法差别
Java |
C# |
|
主类名与文件名 |
必须一致 |
可以不一致 |
命名空间导入方式 |
import关键字 |
using关键字 |
常量 |
final关键字 |
Const关键字 |
基本数据类型 |
C#中有无符号数,Java没有。 C#中有值类型,且可自己定义值类型的结构体(struct)。 C#中int等同于System.Int32,是值类型;bool等同于System.Boolean;等。 Java中的int与Integer的对应在C#中类似int和Nullable<int>的对应,它们的后者都是前者的包装,且后者可以等于null。但Nullable<int>实际上仍然是值类型的(所以仍然很轻量级),所以从内存上讲C#中int和Object的对应更接近Java的对应一些。C#中Nullable<int>到int的转换必须显式进行,因为Nullable<int>中的值为null时会引发运行时异常。 注: 可以为 null 的类型是 System.Nullable<T> 结构的实例。 可以为 null 的类型可以表示其基础值类型正常范围内的值,再加上一个 |
|
初始化 |
调用基类构造函数: SubClass(){ super(); } |
调用基类构造函数: SubClass():base(){} 或者代码中使用base(); |
Switch语句 |
(1)只能处理int类型或者字符型 (2)每个case块后写break语句,不然会有穿透问题。 注:无Goto语句。 |
(1)一样 (2)要求每一个case块或者在块的末尾提供一个break语句,或者用goto转到switch内的其他case标签。 注:最好不用,不易控制。 |
声明数组 |
灵活。 Int[] x={1,2,3};//正确 Int x[]={1,2,3};//正确 |
Int[] x={1,2,3};//正确 Int x[]={1,2,3};//错误 |
面向对象 |
完全面向对象 |
相同 |
继承 |
类的单继承; 可以实现多个接口; |
相同 |
多态 |
支持某些形式的多态性机制 |
相同 |
重写 |
默认方法都可被重写,派生类和子类方法签名一样时被认为是重写。要声明不能被重写的方法需在方法前加final关键字。重写时可以在方法前添加标注(即C#中的定制特性)@Override,这样一旦此方法找不到被重写的方法时编译器会报错,以防止拼写错误。 |
被重写的方法必须添加virtual关键字声明为虚方法,派生类重写子类方法时添加override关键字。 |
访问修饰符 |
4类 Public:成员可以从任何代码访问; Protected:成员只能从派生类访问; Default:默认 Private: |
Public公有访问。不受任何限制。 Private私有访问。只限于本类成员访问,子类,实例都不能访问 Protected保护访问。只限于本类和子类访问,实例不能访问。 Internal内部访问。只限于本项目内访问,其他不能访问。 protected internal内部保护访问。只限于本项目或是子类访问,其他不能访问 |
内部类 |
内部类可以直接访问外部类的实例成员 |
C#的内部类不可以直接访问外部类的实例成员;C#的内部类等同于java的静态内部类 |
最终类 |
final关键字定义的类不能再被派生 |
Seale关键字定义的类不能再被派生 |
接口 |
(1)关键字:interface; (2)接口内允许有内部类、静态字段等; |
(1)关键字:interface; (2)接口内不允许有内部类、静态字段等; |
内存管理 |
由运行时环境管理,使用垃圾收集器 |
由运行时环境管理,使用垃圾收集器 |
指针 |
完全不支持。代之以引用 |
支持,你只在很少使用的非安全模式下才支持。通常以引用取代指针 |
泛型 |
Java中泛型实现使用的擦除机制,为类型参数传入类型并不导致新类型出现,即传入了类型参数后在运行时仍然完全不知道类型参数的具体类型,它的目的是为了兼容非泛型(所以可以在泛型和非泛型之间隐式转换,会有编译警告但不会有编译错误,这当然其实并不安全);这同时衍生了一系列问题:不能定义泛型类型参数的数组如T[],不能通过new T()的方式实例化泛型,等。 |
C#的泛型在类型参数传入类型后会产生一个新类型(虽然CLR的优化机制会使引用类型共享同样的代码),可以在运行时得到类型参数的类型信息。可以定义泛型数组,可以添加约束使其可以new。C#的泛型可以使用值类型(不会被装箱)。 |
参数引用传递 |
只有值传递 |
使用关键字ref:迫使值参数通过引用传递给方法; 使用关键字out:在参数未初始化的情况下,在一个函数中输出多个值; 使用关键字params:自动把参数转为数组; |
Ref: 当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。 Out: out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。 |
转载于:https://www.cnblogs.com/xxuan/p/7306363.html
JavaC#语法差别相关推荐
- c语言Python语法结构差别,Python语法与类C语言语法的差别
原创声明:本文除了标明引用的内容外,都为本人原创,请尊重本人的知识产权,不能用于商业用途.欢迎转载,转载请在文章开头处插入以下内容: 背景知识 对于有C/C++/Java等类C语言背景的人来说,Pyt ...
- MySql的存储过程介绍及语法实例操作
阅读目录 什么是存储过程 有哪些特性 创建一个简单的存储过程 存储过程中的控制语句 存储过程弊端 什么是存储过程 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAV ...
- 达梦数据库兼容Oracle之SQL语法(一)
对于刚从Oracle数据库转到达梦数据库,SQL语法的使用基本一致,有一些差别,下面总结的一些常用SQL语法差别. 文章目录 1.导入数据 2.返回查询数据的返回行 3 外连接用法 4.多列IN用法 ...
- 与其争论java和.net的差别,还不如多想点用编程技术挣钱的方式
最近,我发现在博客园和其它地方,有不少争论java和.net哪个好的文章,其实这是种好现象.虽然到了架构层面,技术是通用的,但兼听则明,而且技多不压身,多种挣钱的方式总不会错. 本人最近主攻Java, ...
- Python3.8.0语法汉化规范思路1.0版
序:一直为看不懂的英语和大量的词汇困扰着,由于疫情期间打算学点什么打发时间,由于要搞中医大数据和中医针灸临床评价,那就学习现在流行的Python吧!一开始想搞一个简单的爬虫,搭建环境测试程序,各种报错 ...
- VBA里的文本函数 find() search() substitute() replace() match() large() 在EXCEL工作表使用和VBA中使用差别的对比
1 find() 1.1 worksheetfunction.find() 工作表函数 FIND(find_text, within_text, [start_num]) FINDB(find_tex ...
- Java精炼语言语法描述
学习hadoop---Java初级快速入门指导(2) http://www.aboutyun.com/thread-6921-1-1.html (出处: about云开发) 阅读本文可以带着下面问题: ...
- Java基础 - javac命令详解(1) 编译基本java项目
1.为什么要搞定 javac 命令 1.javac 是java中的编译源代码的命令工具,将.java文件编译成 .class 文件: 2.由于当下为了提高开发效率,大多数的开发工作都在 java的 集 ...
- 存储过程和函数 PROCEDURE FUNCTION
SQL语句执行的时候,要首先编译,然后在被执行.在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行. 具体而言 ...
最新文章
- JSP中是EL表达式与JSTL
- centos7 install 安装mysql
- Java 11将于本月25日发布,新特性一览
- python里面temp是啥-Python模块学习:tempfile 临时文件(夹)操作
- 2017《面向对象程序设计》课程作业六
- ios 开发框架原始雏形 01
- 新媒体技术发展迅猛 手机将让生活产生巨变(转)
- loadrunner脚本中参数有中文时报错
- libfacedetection库 yufacedetectnet-open-v1.prototxt详解
- Spring boot Scheduled 配置
- 缠中说禅_缠中说禅严格笔画法
- 多核服务器装SQL2005,提示SQL server服务无法启动
- 解决Android模拟器不能联网问题
- C#按钮添加图片的解决
- Can't locate Time/HiRes.pm in @INC错误的处理方法 perl安装不全
- 在线学习(Online learning)与离线学习(Offline learning)
- 学习Ext第一天(Ext 简介)
- kony移动开发平台源码github地址
- 《D o C P》学习笔记(5 - 1)Dealing with Uncertainty Through Probability - Lesson 5
- java中format