0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言与Java之间的主要区别有哪些

Wildesbeast 来源:今日头条 作者:编码老将 2020-02-24 14:31 次阅读

本文主要为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#允许按引用调用原始类型和引用类型。

C#中缺少Java的功能

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平台的设计者之间的主要哲学差异。

Java 1.5的泛型使用类型擦除。当Java源代码编译为字节码时,有关泛型类型的信息将会丢失。.NET 2.0的泛型在编译后得以保留,因为从.NET公共语言运行时2.0版(简称CLR)开始,对泛型的支持。Java的方法允许Java 1.5二进制文件在1.4 JRE中运行,但要付出额外的运行时类型检查的代价。

C#是由ECMA和ISO标准定义的,而Java是专有的,尽管在很大程度上是通过开放社区流程进行控制的。

C#API完全由Microsoft控制,而Java API通过开放的社区流程进行管理。

.NET运行时允许托管和非托管代码,从而实现Java的纯托管代码环境中不存在的某些类型的错误,但也可以与现有代码进行交互。

问题:java在默认中,所有方法都是虚方法,这意味着什么?

答:这意味着,java中的所有对象,基本上都有了动态代理的潜在可能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2903

    浏览量

    102940
  • C语言
    +关注

    关注

    180

    文章

    7519

    浏览量

    126952
  • C++
    C++
    +关注

    关注

    21

    文章

    2065

    浏览量

    72873
收藏 人收藏

    评论

    相关推荐

    DSP C语言与主机C语言主要区别

    DSP C语言与主机C语言主要区别1)DSP的C语言
    发表于 11-03 15:14

    AVR单片机与51单片机的主要区别有那些啊?

    本帖最后由 eehome 于 2013-1-5 10:04 编辑 AVR单片机与51单片机的主要区别有那些啊?(劳请高手将得能应用领域、编程控制及设计等方面详细点儿,谢谢啦!)
    发表于 07-16 22:51

    JAVAC++区别

    c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。 我在这里不能完全列出不同之处,仅列出比较显著的
    发表于 10-10 14:50

    请问TMS570与RM48X的主要区别有哪些?

    本帖最后由 一只耳朵怪 于 2018-5-22 14:43 编辑 问下TMS570与RM48X的主要区别有哪些?
    发表于 05-22 01:45

    请问VC707的不同部件号之间主要区别是什么?

    嗨,大家好!我只是想知道VC707的不同部件号之间主要区别是什么,例如EK-V7-VC707-G和EK-V7-VC707-Gj。谢谢,Meysam
    发表于 09-17 10:36

    请问DSP的C语言同主机C语言之间区别是什么?

    DSP的C语言同主机C语言主要区别
    发表于 09-17 05:55

    蓝牙信标和蓝牙标签之间主要区别在哪里?

    什么是蓝牙信标?什么又是蓝牙标签?蓝牙信标和蓝牙标签之间主要区别在哪里?
    发表于 06-26 06:51

    USART和UART的主要区别

    和UART的主要区别在于,USART支持同步通信,该模式有一根时钟线提供时钟。串口在嵌入式中经常使用,一般使用UAR
    发表于 08-16 09:08

    HDL语言中的unsigned与signed的主要区别是什么

    unsigned是什么意思?signed是什么意思?HDL语言中的unsigned与signed的主要区别是什么?
    发表于 09-24 07:02

    C语言JAVA区别在哪

    一、前言C语言属于汇编型语言。是区别于解释型语言的(如JAVA)做个比较编译型
    发表于 12-09 08:20

    AMOLED与OLED的主要区别

    电子专业单片机相关知识学习教材资料——vAMOLED与OLED的主要区别
    发表于 10-25 18:27 0次下载

    JAVA语言优缺点

    本视频主要详细介绍了JAVA语言优缺点,首先介绍了JAVA语言优点,分别有简单、面向对象、分布式
    的头像 发表于 12-26 16:10 1.5w次阅读

    NTC与PTC的主要区别和应用

    电子发烧友网站提供《NTC与PTC的主要区别和应用.zip》资料免费下载
    发表于 02-06 14:03 2次下载
    NTC与PTC的<b class='flag-5'>主要区别</b>和应用

    步进电机和伺服电机的主要区别

    在许多领域都需要各种电机,包括知名的步进电机和伺服电机。但是,对于许多用户而言,他们不了解这两种电机的主要区别,因此他们始终不知道如何选择。那么,步进电机和伺服电机之间主要区别是什么?
    发表于 08-21 10:14 1923次阅读
    步进电机和伺服电机的<b class='flag-5'>主要区别</b>

    高光谱相机与多光谱相机的主要区别

    高光谱相机和多光谱相机之间主要区别在于它们记录的波段数量和波段的宽度(即光谱分辨率)。
    的头像 发表于 12-07 16:54 478次阅读
    高光谱相机与多光谱相机的<b class='flag-5'>主要区别</b>