最近初学C#,在这里小结一下在网上找到的C#与Java的一些小异同
最重要的功能对比:
相同点:
继承:C#与Java均是单继承,可实现多个接口。
接口实现:C#与Java均是通过“interface”关键词。
内存管理:均由运行时环境管理,使用垃圾收集器。
单一的公共基类:两者均是Object
异常处理:均提供异常处理
封装与可见性:无论是在C#还是Java中,都可以决定类成员是否可见。
多态性:C#和Java都支持某些形式的多态性机制。
不同点:
指针:C#支持,但只在很少使用的非安全模式下支持,通常以引用取代指针,Java则完全不支持,以引用取代之。
源代码编译后的形式:C#为.NET中间语言(IL),Java为字节码(.class)。
默认包:C#中不存在默认的包,Java中java.lang包是默认的包。
最终类:C#中不存在final关键词,但可以使用sealed关键词使某个类不再被派生。
下表是一些更细化的异同对比:
项目 | C# | Java |
源文件拓展名 | .cs | .java |
包含的顶级公共类 | 可包含多个,文件名不需要与类名相同 | 只能包含一个,文件名必须与类名相同 |
顶级声明 | Namespace,允许一个文件出现多个命名 空间 | Package,一个源文件中不能出现多个包 |
| ||
引用命名空间或包 | Using | Import |
数据类型与运算符 | ||
字符串类型 | String | String |
布尔类型 | Bool | boolean |
比较字符串的值 | ==,!=,Equals() | Equals() |
隐式和显示类型转换 | 相似 |
|
基本运算符 | 相同,+,-,*,/,%,=,==,?:,++,--,!,&&,||,() | |
分支语句 | ||
if | 相同 |
|
switch | 每个case尾部必须有break 可判断字符串变量 | 不强制要求case中包含break 不能判断字符串变量 |
数组 | ||
数组声明 | 数组声明中的方括号必须跟在数据类型 后面,且不能放在变量名称之后 如:int[] array | 方括号可以放在变量名前或后 如:int[] array或int array[] |
初始化 | 可以同时指定数值长度和初值,但初值 的数目必须一致 如:int[] array = new int[3]{1,2,3} | 如果赋初值就不能指定长度,如果指定 长度就不能赋初值 如:int [] array = new[3]; int[] array = new int[]{1,2,3}; |
循环语句 | ||
For,while,do…while | 相同 |
|
foreach | C#独有 | 无 |
方法 | ||
程序入口 | Main方法,M大写返回类型为void或int 命令行参数可选 | main方法,m小写返回类型为void命令行 参数必须有 |
基本数据类型作参数 | 默认是值传递,用ret可以变成引用传递 | 值传递 |
上述文字与表格的内容对比仅是C#与Java间异同的很少以及很基本的一部分,C#与Java两者从很大程度上有着许多的相同点,但尽管如此我们在使用两种不同的语言时不难发现其实两者也有很多的不同之处。掌握好这些差异所在并加以利用才能提高自身编写程序效率。