java和ruby的主要区别和相似之处是什么?

时间:2010-01-07 03:16:11

标签: java ruby

我现在是java专业人士,我喜欢去ruby。这两种语言都有相似之处吗?有什么主要区别?因为两者都是面向对象的。

4 个答案:

答案 0 :(得分:15)

这些怎么样:

<强>相似性

与Java一样,在Ruby中......

  • 通过垃圾收集器为您管理内存。
  • 对象是强类型的。
  • 有公共,私有和受保护的方法。
  • 有嵌入式doc工具(Ruby称为RDoc)。 rdoc生成的文档与javadoc生成的文档非常相似。

<强>差异

与Java不同,在Ruby中......

  • 您无需编译代码。你可以直接运行它。
  • 所有成员变量都是私有的。从外面看,您可以通过方法访问所有内容。
  • 一切都是对象,包括2和3.14159之类的数字。
  • 没有静态类型检查。
  • 变量名称只是标签。它们没有与之关联的类型。
  • 没有类型声明。你只需要根据需要分配新的变量名,它们只是“弹出”(即a = [1,2,3]而不是int [] a = {1,2,3};)。
  • 没有演员。只需调用方法即可。
  • 构造函数始终命名为“initialize”而不是类的名称。
  • 你有“mixin's”而不是接口。
  • ==和equals()在Ruby中的处理方式不同。当你想在Ruby中测试等价时使用==(equals()是Java)。当你想知道两个对象是否相同时(==在Java中),请使用等于?()。

取自:To Ruby From Java

答案 1 :(得分:6)

除了面向对象之外,两种语言之间的相似性很少。 Java是一种静态类型的编译语言,而ruby是一种动态类型的解释语言。语法也非常不同。 Java使用c使用分号终止行的约定,而ruby使用返回字符。

虽然Java确实有一些内置的迭代器支持,但ruby对迭代器的使用在整个语言中都很普遍。

这显然只涉及两者的比较。 This is a decent write-up on the comparisons

答案 2 :(得分:4)

你问的是一个非常广泛的问题。我喜欢将脚本语言与我比较口语的方式进行比较,所以在这种情况下;西班牙语和意大利语有哪些主要的区别和相似之处?

如果你提出这个问题,那么你要么得到非常多或很长的答案。解释语言之间的差异充其量是困难的,因为很难确定关键因素。

到目前为止,此处的回复以及其他人与之相关的链接证明了这一点。它们要么变化要么很长。

回到西班牙语与意大利语的比喻,我可以说语言相似但仍然非常不同。如果您(仅)知道其中一个,您可能能够理解另一个中发生了什么,尽管您可能无法很好地使用它。知道一个肯定会让你更容易学习另一个。一个人被更多的人使用,所以你可以从学习中受益更多。

前面的所有段落也可以应用于Java与Ruby。说两者都是面向对象的,就像说西班牙语和意大利语都是罗马语系的成员。

当然,所有这一切都无关紧要。最有可能的是,你的基本问题是它是否“值得”学习Ruby而不是Java或者除了Java之外。不幸的是,这也没有简单的答案。您必须权衡每种语言的优缺点,例如受欢迎程度,需求和职业机会。然后自然会出现你喜欢哪种语言的问题。您可能比其他语言更喜欢一种语言,因为它具有更好的语法。 (同样地,你可能更喜欢意大利语,因为你认为它比西班牙语更“美丽”,尽管后者更广泛并且你有更多“使用”它。)

就个人而言,我更喜欢Ruby。出于许多不同的原因。就像我更喜欢意大利语。

答案 3 :(得分:1)

  1. 与Java相比,Ruby中面向对象的功能实际上非常不同。 在Ruby中,一切都是对象,包括基本类型(在Java中),如整数。
  2. 在Ruby中,new就像属性而不是关键字。因此,要实例化一个对象,您可以在Ruby中执行此操作:

    animal = Animal.new

  3. Ruby是强类型,但也是动态的。由于它的动态性,Ruby可以让你做鸭子打字。

  4. Ruby对多重继承的回答是mixin(这是一种语言特性),在Java中你可以实现很多接口。
  5. Ruby有块,你可以使用匿名类在Java中实现相同的功能。但是IMHO Ruby块更强大。
  6. 所以我可以说Java和Ruby没有太多的相似之处。直到今天,我发现两者之间没有任何相似之处,因为Ruby已经走了它自己的路径,而不像许多其他源自C语言的语言。