我在 64 位编译器上执行了一个 java 程序并为该程序生成了字节码。是否可以在 32 位编译器上运行相同的字节码而不丢失数据?
在我的程序中,我在 64 位编译器上声明了一个变量 x=10024
?
那么 x 在 32 位编译器中的值是多少?如果 x 的值相同,怎么可能不丢失数据?你能详细说明一下吗?
最佳答案
当您运行“32 位”编译器时,您是在 32 位 JVM 中运行编译器代码,而当您运行“64 位”编译器时,您是在 64 位 JVM 中运行完全相同的代码JVM 会产生完全相同的字节码。如果字节码不完全一样,你就发现了一个错误。唯一的区别是“64 位”版本可能运行得稍微快一些(猜测高达 5%)
I have executed a java program on a 64-bit compiler
您在编译器中编译字节代码,而不是运行它。
and generated the byte code for that program.
字节码不是 32 位或 64 位的,创建它的方式或在哪个 JVM 中运行编译器都没有区别。
Is it possible to run the same byte code on a 32-bit compiler without loss of the data?
无论是 32 位还是 64 位,您都可以使用由任何版本的 Java 编译的类编译代码,直至同一版本。
In my program I have declared a variable x=10024 on 64-bit compiler?
这没有任何意义。您可能已经使用在 64 位 JVM 中运行的编译器编译了类似 int x=10024;
的代码。它的编译方式没有任何区别。
Then what will be the value of x in 32-bit compiler?
与在 32 位 JVM 或任何其他 JVM 中运行的编译器相同。
If the value of x is same, How is it Possible without loss of data?
没有理由会丢失数据。如果 x
是一个 int
,它将是一个 32 位有符号值,无论您如何编译代码或使用哪个 JVM 来运行编译器。
关于java - Java 平台独立性将如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122816/