嗨我有以下java代码,
public class A{
private String B="test_string";
private int AA;
public int C;
private int method1()
{
int a;
a=0;
return a;
}
private int method1(int c, String d)
{
int a;
a=c;
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
但当我使用javap -c命令获取等效的字节代码时,
Compiled from "A.java"
public class A extends java.lang.Object{
public int C;
public A();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2; //String test_string
7: putfield #3; //Field B:Ljava/lang/String;
10: return
}
Run Code Online (Sandbox Code Playgroud)
我不清楚这里的字节代码,因为私有变量和方法声明在哪里?
任何人都可以向我解释这个吗?
Jon*_*eet 12
您需要-p显示私人成员的选项:
javap -c -p A
Run Code Online (Sandbox Code Playgroud)
然后你会看到一切:
Compiled from "A.java"
public class A {
private java.lang.String B;
private int AA;
public int C;
public A();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2 // String test_string
7: putfield #3 // Field B:Ljava/lang/String;
10: return
private int method1();
Code:
0: iconst_0
1: istore_1
2: iload_1
3: ireturn
private int method1(int, java.lang.String);
Code:
0: iload_1
1: istore_3
2: iload_3
3: ireturn
}
Run Code Online (Sandbox Code Playgroud)