java - Java 平台独立性将如何运作?

标签 java jvm bytecode

我在 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/

相关文章:

java - 从函数内启用 Android 应用程序按钮

java - 使用浏览器上传大文件而不会挂起(最好使用 Flash)

Java 7 标准 WatchEventKind.ENTRY CREATE 文件写入完成

java - 为什么非静态方法有额外的Local?还有,这是什么?

java - 为什么 Java 会砍掉这么长的高阶位?

java - while循环应用了什么样的优化JIT

java - 汇编 : Stateful Transformation

java - 如何围绕 super 椭圆进行平滑运动?

ocaml - CAMLprim、CAMLexport、CAMLextern

java - 这两种类型转换方式有什么区别吗?