有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java兼容性

我在两台机器上运行相同的代码。一个(windows 7 64)使用:

java version "1.7.0"
java<TM> SE Runtime Environment <build 1.7.0-b147>
Java HotSpot<TM> 64-Bit Server VM <build 21.0-b17, mixed code>

另一个(linux 64)使用:

java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b15, mixed mode)

我得到了不同的结果。我认为是虚拟机,因为我复制了。类文件,运行这些文件,仍然得到不同的输出。 谁能告诉我这是什么原因吗

编辑:

代码位于http://pastebin.com/5EmYFkYn

在两次运行之间,输出应该有所不同,但不会像这两台机器之间那样剧烈


共 (2) 个答案

  1. # 1 楼答案

    在同一个Linux机器上,我使用Java 6 update 31获得~1.78,使用Java 7 update 7获得~3.8

    然而,如果我得到带有new Random(1)或其他数字的随机种子,我会得到相同的结果。e、 对于第三个数字,g.1总是产生~0.79

    看看随机种子是如何创建的代码,代码是完全不同的,我怀疑nextDouble()并不像它应该的那样随机,也就是说,你的值应该变化更大,种子是如何设置的应该非常重要


    每次我在同一台机器上用同一版本的Java运行它,我都会得到不同的结果。很可能是因为代码中有随机元素

    499470 0 3.7783771731449503 10000.355400975242 0.07565041858446288 42
    499430 0 3.8374792234448916 10001.384837656298 0.07684781955465791 53
    499604 0 3.868284648304009 10000.698947869778 0.07743242690681965 57
    499114 0 3.822480313596936 10001.023197561686 0.07659315164172079 46
    500030 0 3.8653339884104576 10000.112232176294 0.077302909223347 43
    

    由于在同一台机器上运行不同,我希望它们在不同的机器上,以及在不同的Java版本上是不同的

    <>我仍然会认真考虑java的更新版本,而不是java 7“更新什么”或者java四的版本,它是四年的。p>
  2. # 2 楼答案

    其中一台机器运行java 6,另一台运行java 7。这些版本之间有许多变化:

    http://openjdk.java.net/projects/jdk7/features/

    此外,可能会有很多细节变化,这些变化可能会影响文档中未描述或未定义的行为

    如果不查看源代码,或者至少不知道您所说的输出中存在哪些差异,就无法判断这些差异中哪些可能会影响您的程序