1

此代码抛出 java.lang.NullPointerException。我正在尝试将一些代码编译到 jvm,这就是我的编译器输出的内容

.class  public  test
.super  java/lang/Object
.field static   i  [I
.method  public static  main([Ljava/lang/String;)V
invokestatic    test/main()V
return
.limit  locals  1
.limit  stack  20
.end    method
.method  public static  main()V
.limit  locals  8
getstatic   test/i  [I
ldc 1
ldc 5
iastore
return
.limit  stack  20
.end    method

但是它不起作用,我可以弄清楚错误来自哪里(没有给出行号。)

我打赌它没有将全局数组中的值正确存储在行中

getstatic   test/i  [I
ldc 1
ldc 5
iastore

我的问题是这应该如何编译

4

1 回答 1

2

这将编译为 Java 代码

public class Test {
    static int[] i;
    public static void main(String[] args) {
        main();
    }
    public static void main() {
        i[1] = 5;
    }
}

如果你编译并运行它,你会看到它抛出一个 NullPOinterException 因为没有创建一个 int 数组来存储在i. 您需要int[](至少)创建一个维度为 2 的对象,newarray以使此代码正常工作。

于 2018-11-30T13:55:17.900 回答