介绍本文主要为C#开发人员了解JAVA提供一些基础 。
Java中缺少C#的功能
- C#包含更多原始类型和捕获算术异常的功能 。
- 包括大量的Java注释便利 , 其中许多 , 例如运算符重载和用户定义的强制转换 , 已经为C ++程序员社区所熟悉 。
- 事件处理是“一流的公民” , 它是语言本身的一部分 。
- 允许定义“结构” , 这些结构类似于类 , 但可以在堆栈上分配(与C#和Java中类的实例不同) 。
- C#将属性作为语言语法的一部分来实现 。
- C#允许switch语句对进行操作string 。
- C#允许提供闭包功能的匿名方法 。
- C#允许迭代器通过功能样式yield关键字使用协程 。
- C#支持输出参数 , 帮助返回多个值 , 这是C ++和SQL共享的功能 。
- C#具有别名空间的能力 。
- C#具有“显式成员实现” , 该类允许类从其自己的类方法中单独实现接口的方法 。这也允许它实现两个不同的接口 , 碰巧具有相同名称的方法 。接口的方法不必是public; 它们只能通过该界面进行访问 。
- C#提供了与COM的集成 。
- 按照C和C ++的示例 , C#允许按引用调用原始类型和引用类型 。
- Java的strictfp关键字保证浮点运算的结果在各个平台之间保持相同 。
- Java支持检查异常 , 以更好地实施错误捕获和处理 。

文章插图
语言之间的哲学差异
- Java中没有无符号的原始数字类型 。尽管普遍认为在代码中混合有符号和无符号变量是不好的 , 但是Java缺乏对无符号数字类型的支持 , 这使其在某种程度上不适合低级编程 。
- C#不包括检查的异常 。有人会认为检查异常对于良好的编程习惯非常有帮助 。其他人 , 包括首席C#语言架构师Anders Hejlsberg , 认为它们在某种程度上是Java的实验 , 而且还没有证明它们是值得的 。
- C#的命名空间与C ++中的命名空间更为相似 。与Java不同 , 名称空间不指定源文件的位置 。(实际上 , 对于Java源文件位置来说 , 对应它的包目录结构并不是绝对必要的 。)
- C#包括委托 , 而Java不包括 。有人认为委托使方法调用模型复杂化 , 因为委托是通过反射来处理的 , 这通常很慢 。另一方面 , 它们可以通过消除声明新的(可能是匿名的)类以挂接到事件的需要 , 从而简化代码 。
- Java要求源文件名必须与其中的唯一public类匹配 , 而C#允许public同一文件中有多个类 。
- C#允许使用指针 , 某些语言设计者认为这是不安全的 , 但是某些语言功能试图确保不会意外滥用此功能 。指针还极大地使诸如Java的RMI(远程方法调用)之类的技术复杂化 , 在该技术中 , 可以在一台完全独立的计算机上运行的程序中引用驻留在一台计算机上的程序对象 。一些人推测 , Java中缺少内存指针(被对象引用的更抽象的概念所取代)是网格计算时代的头号功臣 , 网格应用程序可以将单个应用程序分布在许多物理硬件上 。
- C#支持goto关键字 。有时这可能很有用 , 但是通常建议使用结构化的控制流方法 。
- C#具有真正的多维数组 , 相对Java可用的数组(C#称为锯齿状数组) 。多维数组始终是矩形的(在2D情况下 , 或对于更大的维数类似) , 而数组可以存储各种长度的行(同样在2D情况下) 。如果内存是一个瓶颈(只有一个内存引用而不是两个内存引用 , 则矩形阵列可能会加快访问速度);如果内存不完整但成本高昂 , 则锯齿状数组可以节省内存(每行一个指针的代价)。矩形数组还消除了为每行显式分配内存的需要 。
- Java不包括运算符重载 , 因为滥用运算符重载可能导致难以理解和调试的代码 。C#允许操作符重载 , 如果谨慎使用 , 则可以使代码更简洁 , 更易读 。Java缺乏重载使其在某种程度上不适合某些数学程序 。相反 , .NET的数字类型不与add / subtract / etc共享公共接口或超类方法 , 限制了数值库的灵活性 。
- 默认情况下 , C#中的方法是非虚拟的 。但是 , 在Java中 , 默认情况下方法是虚拟的 。虚方法保证将调用对象的最终重载方法 , 该方法由运行时确定 。在调用或编写任何虚拟方法时 , 您始终必须牢记这一点!如果该方法声明为非虚拟方法 , 则调用的方法将由编译器确定 。这是Java和.NET平台的设计者之间的主要哲学差异 。
推荐阅读
- 小风暴之时间的玫瑰郑婉莹结局 小风暴之时间的玫瑰高山的仇人是谁
- qq勿扰模式自动回复语怎么设置 qq自动回复怎么设置
- 新学期开学家长朋友圈寄语最新 开学了家长的心情短句
- 茶文化介绍,用英语介绍茶文化
- 彼岸花的花语是什么
- 萱草花语是什么
- 茶道术语,茶道新手入门
- 那些主流编程语言的知识,C语言
- Windows 10版本之间的区别真的那么大吗?我来告诉你!
- 茶叶介绍,用英语介绍茶文化