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
在两次运行之间,输出应该有所不同,但不会像这两台机器之间那样剧烈
# 1 楼答案
在同一个Linux机器上,我使用Java 6 update 31获得~1.78,使用Java 7 update 7获得~3.8
然而,如果我得到带有
new Random(1)
或其他数字的随机种子,我会得到相同的结果。e、 对于第三个数字,g.1总是产生~0.79看看随机种子是如何创建的代码,代码是完全不同的,我怀疑nextDouble()并不像它应该的那样随机,也就是说,你的值应该变化更大,种子是如何设置的应该非常重要
每次我在同一台机器上用同一版本的Java运行它,我都会得到不同的结果。很可能是因为代码中有随机元素
由于在同一台机器上运行不同,我希望它们在不同的机器上,以及在不同的Java版本上是不同的
<>我仍然会认真考虑java的更新版本,而不是java 7“更新什么”或者java四的版本,它是四年的。p># 2 楼答案
其中一台机器运行java 6,另一台运行java 7。这些版本之间有许多变化:
http://openjdk.java.net/projects/jdk7/features/
此外,可能会有很多细节变化,这些变化可能会影响文档中未描述或未定义的行为
如果不查看源代码,或者至少不知道您所说的输出中存在哪些差异,就无法判断这些差异中哪些可能会影响您的程序