C# 和 Java 之间的主要区别是什么?

2023-12-09

我只想澄清一件事。这不是哪个更好的问题,这部分我留给其他人讨论。我不在乎。 我在面试时被问到这个问题,我认为了解更多可能会有用。

这些是我能想到的:

  • Java 是“平台无关的”。那么现在你可以说有Mono项目,所以 C# 也可以考虑,但是 我相信这有点夸张。为什么?好吧,当 Java 的新版本完成后,它可以同时在它支持的所有平台上使用,另一方面,Mono 实现中仍然缺少 C# 3.0 的多少功能?或者真的是这样吗CLR vs. JRE我们应该在这里比较吗?
  • Java 不支持事件和委托。据我所知。
  • 在Java中所有方法都是虚拟的
  • 开发工具:我相信还没有像Visual Studio这样的工具。特别是如果您使用过团队版本,您就会明白我的意思。

请添加您认为相关的其他内容。

更新: 我突然想到,Java 没有类、方法等自定义属性之类的东西。是吗?


比较 Java 7 和 C# 3

(这里没有提及 Java 7 的一些特性,但是using所有版本的 C# 相对于 Java 1-6 的声明优势已被删除。)

您的总结并非全部正确:

  • 在Java中方法是虚拟的默认情况下但你可以将它们定为最终的。 (在 C# 中,它们默认是密封的,但您可以将它们设为虚拟。)
  • 有很多用于 Java 的 IDE,既有免费的(例如 Eclipse、Netbeans),也有商业的(例如 IntelliJ IDEA)

除此之外(以及您的摘要中已经包含的内容):

  • 两者之间的泛型完全不同; Java 泛型只是一种编译时“技巧”(但确实是一个有用的技巧)。在 C# 和 .NET 中,泛型也在执行时维护,并且适用于值类型和引用类型,保持适当的效率(例如List<byte> as a byte[]支持它,而不是装箱字节数组。)
  • C# 没有检查异常
  • Java 不允许创建用户定义的值类型
  • Java没有运算符和转换重载
  • Java 没有迭代器块来简单实现迭代器
  • Java 没有像 LINQ 这样的东西
  • 部分由于没有委托,Java 没有类似匿名方法和 lambda 表达式的东西。匿名内部类通常扮演这些角色,但很笨拙。
  • Java没有表达式树
  • C#没有匿名内部类
  • 事实上,C# 根本没有 Java 的内部类 - C# 中的所有嵌套类都像 Java 的静态嵌套类
  • Java 没有静态类(静态类没有any实例构造函数,不能用于变量、参数等)
  • Java 没有任何与 C# 3.0 匿名类型等效的东西
  • Java 没有隐式类型局部变量
  • Java没有扩展方法
  • Java 没有对象和集合初始值设定项表达式
  • 访问修饰符有些不同 - 在 Java 中(目前)没有程序集的直接等效项,因此不知道“内部”可见性;在 C# 中,没有相当于 Java 中考虑命名空间(和继承)的“默认”可见性
  • Java 和 C# 中的初始化顺序略有不同(C# 在链式调用基类型的构造函数之前执行变量初始值设定项)
  • Java 没有作为语言一部分的属性;它们是 get/set/is 方法的约定
  • Java 没有相当于“不安全”的代码
  • C#(以及一般的 .NET)中的互操作比 Java 的 JNI 更容易
  • Java 和 C# 对枚举的理解有些不同。 Java 更加面向对象。
  • Java 没有预处理器指令(C# 中的 #define、#if 等)。
  • Java 没有与 C# 相当的语言ref and out用于通过引用传递参数
  • Java 没有等价的部分类型
  • C# 接口无法声明字段
  • Java没有无符号整数类型
  • Java没有language支持十进制类型。 (java.math.BigDecimal 提供了一些东西likeSystem.Decimal - 有差异 - 但没有语言支持)
  • Java 没有可空值类型的等效项
  • Java 中的装箱使用预定义的(但“正常”)引用类型及其特定操作。 C# 和 .NET 中的装箱是一件更加透明的事情,CLR 会为任何值类型的装箱创建引用类型。

这并不详尽,但它涵盖了我能想到的所有内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 和 Java 之间的主要区别是什么? 的相关文章

  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用 C# 读取 Soap 消息

  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何读取AngularJS中的响应头?

    我的服务器返回这种标头 Content Range 0 10 0 我尝试以角度阅读此标题 但没有成功 var promise http get url params query then function response console
  • 如何使用 Python Discord 机器人发送附件

    我希望我的机器人在调用时将文件 不一定是图像 可以是文本文件 发送到通道 这是我的代码片段 bot command pass context True async def send ctx area ctx message channel
  • 如何在 IPython Notebook 中隐藏一个特定单元格(输入或输出)?

    有没有一种方法可以有选择地隐藏 IPython 笔记本中的一个特定输入或输出单元 我只能找到下面的代码来显示 隐藏所有输入单元格 http blog next Genetics net e 102 但是 如果我只想隐藏笔记本的第一个输入单元
  • 单击VBS中包含特定字符串的链接

    我正在尝试运行一个自动 vbs 脚本 单击页面上的链接 我有以下形式的东西 Const READYSTATE COMPLETE 4 Set IE CreateObject INTERNETEXPLORER APPLICATION IE Vi
  • 选择 2 个字段并返回一个具有不同值的排序数组

    假设我们有以下文档 a 1 b 2 a 2 b 0 a 3 b 1 我想要一个将返回的查询 0 1 2 3 我想知道是否有一种方法可以比以下更快地做到这一点 只需进行 2 个查询 其中一个选择a 另一个选择b然后合并到我的应用程序中 使用m
  • 登录fft结果

    我正在尝试根据测试目标计算 MTF 我很容易计算出扩展函数 但 FFT 结果对我来说不太有意义 总而言之 这些值似乎交替变化 反映了我的期望 为了测试 我使用了一个简单的方波和 numpy from numpy import fft dat
  • 使用 UIPanGestureRecognizer 将 UIView 拖动到有限区域内

    我想允许用户将 UIView 拖动到其超级视图的有限区域内 尝试以下简单代码 func handlePanForImage recognizer UIPanGestureRecognizer if let myView recognizer
  • 当另一个动画正在进行时,Jquery 动画

    我正在使用这里给出的简单缓动动画JQuery 缓动插件即 将 div 从 left 200 缓动到 left 0 并返回 上页的最后一个示例 我在一个容器 div 中有多个 div 我想要做的是通过以下方式为 4 个 div 设置动画 1
  • Windows Phone 7.1 应用程序中的自动登录过程

    在我的 Windows Phone 应用程序中 银光应用程序 我希望用户在成功登录后自动登录到应用程序 即我不希望用户每次都登录 我通过一个隔离存储文件概念 即首先我创建了 一个目录 我创建了一个隔离存储文件流并将电子邮件和密码凭据存储在某
  • 如何将当前日期与日期选择器中的用户输入日期进行比较

    我试图限制日期和时间 我希望如果用户尝试设置小于当前日期的日期 那么它应该显示警报 并且随着时间的推移也要做同样的事情 我正在使用日期和时间选择器和我的onDateSetListener and onTimeSetListener如下 Da
  • 带有像素图的透明 QLabel

    我有一个 QLabel 我使用 setpixmap 在上面放置了一个图像 该图像有 Alpha 通道 QLabel 位于 QWidget 上 该 QWidget 具有由图像指定的边框图像 以便重新缩放图像以填充 QWidget 在QLabe
  • 如何从结构体数组中删除一个元素?

    如何从类型结构数组中删除元素 假设我注册了一个项目 然后想删除它 我该怎么做 删除函数位于代码末尾 我想通过给出删除该项目varunummer 身份证号码 有人知道该怎么做吗 include
  • “挥发性”关键字的用途是什么?

    我读过一些关于volatile关键字 但我无法弄清楚它的正确用法 你能告诉我它在 C 和 Java 中的用途吗 考虑这个例子 int i 5 System out println i 编译器可能会对此进行优化 只打印 5 如下所示 Syst
  • 如何在 Swift 中将自定义对象追加到数组中?

    如何在 Swift 中将自定义类对象追加到数组中 下面是我的代码 但它显示错误 Error 无法将 的值分配给类型 PhotoVC Code var photoVCs PhotoVC for index in 0 lt photos cou
  • C# Mongo FirstOrDefaultAsync 挂起

    使用 2 0 驱动程序 以下代码有时会挂起并且永远不会返回 public async Task
  • 使用 javascript 正则表达式删除所有脚本

    我正在尝试使用 javascript 中的正则表达式从以下类型的字符串中删除包含内容的所有脚本标签 但我仍然得到输出 当它应该是一个空字符串时 代码是 var BG
  • 在 MATLAB 和 C++ 之间交换数据最有效的方法?

    我正在开发一个应用程序 其中有两个程序同时运行 一个在 C 中 另一个在 MATLAB 中 C 程序定期生成三个数值作为输出 MATLAB 程序需要定期但在不同的时间段访问三个输出 目前 我已经使用解决了这个问题 txt文件 当例程完成时
  • 将字符串转换为数组

    我有一根绳子 就像 string key1 value1 key2 value2 key3 value3 如何从给定的字符串中获取数组 如下所示 array array key1 gt value1 key2 gt value2 key3
  • Laravel angularJS CORS 使用 barryvdh/laravel-cors

    六个小时过去了 我仍然没有得到以下问题的解决方案 我正在尝试让 AngularJS 从不同的域访问我的 API 在网上搜索后我发现了这个package它说它可以 在 Laravel 应用程序中添加 CORS 跨源资源共享 标头支持 我遵循了
  • C# 和 Java 之间的主要区别是什么?

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我只想澄清一件事 这不是哪个更好的问题 这部分我留给其他人讨论 我不在乎 我在面试时被问到这个问题 我认为了解更多可能会有用 这些