I am trying to implement JVM(Java8) by python as a study.
I want to execute java Main
. In main method, Person instance will be initialized.
Then Person class constructor invoke special Method java/lang/Object."<init>":()V
.
But I can't find the definition of that method although I saw JVM spec.
Main.java
class Main{
public static void main(String[] args){
Person p = new Person("Jeff", 17);
}
}
Person.java
public class Person {
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
To compile, I used javac -encoding UTF-8 -target 8 -source 8 *.java
.
javap -v Main
shows below
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
0: new #7 // class Person
3: dup
4: ldc #9 // String Chisato
6: bipush 17
8: invokespecial #11 // Method Person."<init>":(Ljava/lang/String;I)V
11: astore_1
12: return
javap -v Person
shows below
public Person(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: aload_1
6: putfield #7 // Field name:Ljava/lang/String;
9: aload_0
10: iload_2
11: putfield #13 // Field age:I
14: return