我只想澄清一件事.这不是哪一个更好的问题,那部分我留给别人来讨论.我不在乎这件事. 我在求职面试中被问到这个问题,我想多学一点可能会很有用.

这些是我能想到的:

  • Java是"平台无关的".现在你可以说有Mono项目,所以也可以考虑C#,但是 我认为这有点夸张.为什么?那么,当Java的新版本发布后,它同时可以在它支持的所有平台上使用,另一方面,在Mono实现中还缺少多少C#3.0的特性呢?或者,我们应该在这里比较的真的是CLRJRE吗?
  • Java不支持事件和委托.据我所知.
  • 在Java中,所有方法都是虚拟的
  • 开发工具:我相信还没有像VisualStudio这样的工具.尤其是如果你与团队版合作过,你就会明白我的意思.

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

更新: 我突然想到,Java在类、方法等方面没有自定义属性,是吗?

推荐答案

Comparing Java 7 and C# 3

(这里没有提到Java7的一些特性,但是所有版本的C#相对于Java1-6的using语句优势已经消除.)

您的摘要并非全部正确:

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

除此之外(以及你的总结中已经有的内容):

  • 两者之间的仿制药完全不同;Java泛型只是编译时的"把戏"(但在这一点上很有用).在C#和.NET泛型也会在执行时维护,并适用于值类型和引用类型,从而保持适当的效率(例如,List<byte>作为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没有"不安全"代码的类似功能
  • 与Java的JNI相比,C#(和.NET)中的互操作更容易
  • Java和C#对枚举有一些不同的 idea .Java更加面向对象.
  • Java没有预处理器指令(#define,#if etc in C#).
  • Java没有C#的refout等效项来通过引用传递参数
  • Java没有部分类型的类似功能
  • C#接口不能声明字段
  • Java没有无符号整数类型
  • Java不支持十进制类型.(java.math.BigDecimal提供了一些like System.Decimal的东西——虽然有差异——但没有语言支持)
  • Java没有可空值类型的类似功能
  • Java中的装箱使用预定义(但"正常")引用类型,并对其执行特定操作.C#和.NET中的装箱是一件更透明的事情,CLR为任何值类型的装箱创建了一个引用类型.

这并不是详尽无遗的,但它涵盖了我能马上想到的一切.

Java相关问答推荐

为什么Java中的两个日期有差异?

为什么Java的代码工作(if condition内部的实例)

无法处理批处理侦听器中的反序列化异常

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

为什么不应用类型推断?

Java中实现的归并排序算法给出ArrayIndexOutOfBound异常

获取字符串中带空格的数字和Java中的字符

Bean定义不是从Spring ApplationConext.xml文件加载的

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

使用Jackson库反序列化json

使用htmlunit和java单击按钮

try 使用类来包含JSON响应

Spring动态反序列化JSON可以是列表,也可以只是一个对象

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

没有Google Play服务,Firebase Auth无法工作

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了

";重复键的值提示唯一约束«;livre_genre_pkey»";例外

带有提取器的JavaFXObservableList会根据侦听器的存在而改变行为

找不到 jar 文件系统提供程序try 使用 jdeps 和 jlink 创建收缩 Java 映像来运行 Minecraft