java VS c#,异同点
因工作安排,后期需要维护一个java项目。所以稍微熟悉下java,开此篇记录下java与c#的区别点,方便增强自己学习效果。肯定是不全的,可能是有错的,欢迎批评指正。
一、关键字
描述 | C# | Java | 备注 |
引用其他类库 | using | import | |
命名空间 | namespace | package | 声明一组相关对象的作用域。 |
定义常量 | const | final | |
访问控制修饰符 | internal | default | java默认为default,c#默认为private |
表示父类 | base | super | 用于从派生类中访问父类的成员。 |
继承类 | : | extend | |
继承接口 | : | implements | |
不允许继承 | sealed | final | 防止类派生;防止方法和属性在派生类中被重写。 |
类型判断 | is | instanceof | 评估对象与给定类型是否兼容。 |
循环遍历 | foreach() | for(type element: array) | 例:for(int x : numbers ){} |
锁 | lock | synchronized | |
可变数量参数 | params T | T... | 指定采用可变数目的参数的方法参数。 |
外部实现的方法 | extern | native | 声明外部实现的方法。 |
布尔值 | bool | boolean |
二、代码结构
- java中,如果一个类定义在某个包中,那么package语句应该在源文件的首行。package中内容不用花括号包起来,范围适用于全文见。
- java中,如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
- java中,一个源文件中只能有一个public类。
- java中,一个源文件可以有多个非public类。
- java中,源文件的名称应该和public类的类名保持一致。
- java中,调用父类构造函数,需要在子类构造函数中显示调用super(params);C#中在子类构造函数声明后加上:base(param)来实现。
三、编码风格
- java中,方法名使用帕斯卡命名法,首字母小写。
- java中,左花括号不换行。
四、其他
- 在 Java 中,int类型前缀0表示8进制;在C#中忽略0,前缀0x表示8进制。
- 在 Java 中,标识符中允许有美元符($),且允许作为首字符;c#中是@字符。(都是字母数字下划线加前文特殊符号)
- 在 Java 中,重写父类方法不需父类方法标示为virtual。没有覆盖概念。
- Java 不支持隐式类型的局部变量(C# 支持
var
关键字)。
- 在 Java 中,可以仅按值传递参数,而在 C# 中,你可以按引用以及值进行传递。 (C# 提供
ref
和out
关键字,用于按引用传递参数;Java 中无此类等效项)。
- Java 不支持预处理器指令,如
#define
。
- Java 不支持无符号整数类型,而 C# 提供无符号整数类型,如
ulong
、uint
、ushort
和byte
。
- Java 不支持运算符重载;在 C# 中,可以重载运算符和转换。
- 在 Java
switch
语句中,代码可以贯穿到下一个 switch 部分,但在 C# 中,每个switch
部分的结尾必须终止 swith(每个部分的结尾必须以break
语句结束)。
- 在 Java 中,指定由带
throws
关键字的方法引发的异常,但 C# 没有检查异常的概念 –throws
关键字在 C# 中不受支持。
- Java 不支持语言集成查询 (LINQ)。
java VS c#,异同点的更多相关文章
- atitit。全局变量的设计与实现 java php的异同
atitit.全局变量的设计与实现 java php的异同 1. 超级全局(Superglobals)"变量 1 2. 全局变量和"global"关键字 1 3. 更加好 ...
- switch与java,c#的异同
<script type="text/javascript" language="javascript"> //JavaScript控制语句基本和以 ...
- 《Java程序设计》第二周学习总结(一)
教材学习内容总结 标识符.关键字 基本数据类型 类型转换运算 输入.输出数据 数组 教材学习中的问题和解决过程 问题1:在创建vim并编写完成后出现以下情况 问题1解决方案:打开虚拟机的文件目录,发现 ...
- java与C#对比文章阅读
文章:JAVA与C#的区别 讲了C#与java一些基本异同. 易语言官网有个表,比较了易语言.Java.C#的区别,比较全面可以借鉴.
- Java与C语言的区别——含面向对象介绍
很多初学编程的小伙伴或者想要学习编程的小白弄不清C语言和Java的区别.本文就针对萌新们尽量用通俗的语言来介绍一下我所理解的编程语言界的两大巨头. 为什么说是两巨头,介绍之前我们先看一下某度搜索出来的 ...
- 大学四年,总结一套适合小白的Java自学路线和方法
前言篇 大家好,我是bigsai 好久不见,甚是想念,文章同时收录在回车课堂(文底阅读原文可达). 无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班.报班通常太费钱,时间又不 ...
- 开源中国【面经】Java后台开发
2021.04.09 直接正文: 开场自我介绍,说一下自己 有没有实习经历?(毕业实习) 毕业实习学了什么?(前端) 有什么大项目吗?(除了课设就是毕设) 能说一下毕设的情况吗?(做了大概,没有开始登 ...
- 学习Java第3天
今天所做的工作: 1.循环结构 2.字符串 3.数组 4.面向对象概述 明天工作安排: 1.类和对象 2.包装类 所遇到的问题及解决方法: 1.循环foreach语句 2.字符串初始化与c++的差异 ...
- Groovy学习笔记(二)
在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...
- Javascript诞生与历史
基本常识 Brendan Eich在1995年4月入职Netscape Communications Corporation(网景通信公司).并于1995年5月用10天时间发明了Javascript. ...
随机推荐
- [ZJOI2006]物流运输trans
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- AVL平衡二叉查找树
二叉排序树: 定义 二叉排序树,又叫二叉查找树,它或者是一棵空树:或者是具有以下性质的二叉树: 1. 若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值: 2. 若它的右子树不空,则右子树上 ...
- SQL SERVER数据库多条件查询
例如:查询挂号超500的数据select CONVERT(VARCHAR(10),DGH,23),COUNT(*) from yxhis2017..VTBMZGHMX2017 where bth=0 ...
- CentOS 7 的 systemctl 命令
Centos 7.* 使用 Systemd 进行系统初始化,因此,Centos 7.* 中我们可以使用 systemctl 管理系统中的服务. systemctl 管理的服务均包含了一个以 .serv ...
- Qt5教程: (3) 自定义信号与槽
1. 自定义槽 槽可以是任何成员函数.普通全局函数.静态函数 槽函数和信号的参数和返回值要一致 由于信号是没有返回值的, 槽函数也一定没有返回值 首先在mainwidget.h中添加槽函数: publ ...
- Ubuntu 安装mysql & 自定义数据存储目录
一.安装 apt-get install mysql-server 执行过程如下: root@duke:~# apt-get install mysql-server 正在读取软件包列表... 完成 ...
- std::to_string
头文件 #include <string> std::string to_string( int value ); std::string to_string( long value ); ...
- Tomcat源码分析三:Tomcat启动加载过程(一)的源码解析
Tomcat启动加载过程(一)的源码解析 今天,我将分享用源码的方式讲解Tomcat启动的加载过程,关于Tomcat的架构请参阅<Tomcat源码分析二:先看看Tomcat的整体架构>一文 ...
- ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- StringBuffer类讲解
package Main; import java.util.Scanner; public class Main { public static void main(String[] args) { ...