gpt4 book ai didi

java - JDK 和 Eclipse 都不同,JVM 如何理解两者编译的字节码?

转载 作者:行者123 更新时间:2023-12-01 06:55:55 24 4
gpt4 key购买 nike

Eclipse和JDK编译的字节码是不同的。那么JVM是如何理解这两个字节码的呢?示例:

package com.hcl.raj.utilities;

public class StringTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String name = "Rajkumar";
byte[] byteCodes = new byte[] {15,22,35,48};
String str1 = new String(byteCodes);
System.out.println(str1);
}
}

上述源码通过JDK和Eclipse编译出来的代码是不同的。

由于编码和格式问题而删除了发布已编译代码的原始尝试

最佳答案

首先,字节码是否不同,或者只是类文件的其他部分不同?类文件可以包含许多可选信息(用于调试)。

但即使字节码本身不同,它们的行为也像同义词。即使在像 Java 字节码这样严格定义的语言中,您也可以用不同的方式表达相同的行为。

例如,switch/case 语句可以编译为两个不同的操作码之一:tableswitch or lookupswitch 。它们本质上都做同样的事情,因此在某些情况下编译器或多或少可以自由地在它们之间进行选择。

重要的是,尽管这些差异都在标准字节码的限制内,但无论平台或任何其他外部环境如何,任何符合 Java 标准的编译器都不会生成类似符合标准的 VM 无法解释的字节码(假设它们支持相同版本的 Java)。

关于java - JDK 和 Eclipse 都不同,JVM 如何理解两者编译的字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com