Java Reference
In-Depth Information
publicclassFactorial{
//Twomethodsandafield
publicstaticintfactorial(intn){
//position1:
if(n<=0){
return1;
}else{
returnn*factorial(n-1);
}
}
publicstaticvoidmain(String[]args){
intx=n;
//position2:
System.out.println(n+"!="+factorial(x));
}
staticintn=5;
}
Running javap on the class produced for this by the j-- compiler gives us
publicclasspass.Factorialextendsjava.lang.Object
minorversion:0
majorversion:49
Constantpool:
...
{
staticintn;
publicpass.Factorial();
Code:
Stack=1,Locals=1,Args_size=1
0:aload_0
1:invokespecial#8;//Methodjava/lang/Object."<init>":()V
4:return
publicstaticintfactorial(int);
Code:
Stack=3,Locals=1,Args_size=1
0:iload_0
1:iconst_0
2:if_icmpgt10
5:iconst_1
6:ireturn
7:goto 19
10:iload_0
11:iload_0
12:iconst_1
13:isub
14:invokestatic#13;//Methodfactorial:(I)I
17:imul
18:ireturn
19:nop
publicstaticvoidmain(java.lang.String[]);
Code:
Stack=3,Locals=2,Args_size=1
0:getstatic#19;//Fieldn:I
3:istore_1
4:getstatic#25;//Fieldjava/lang/System.out:Ljava/io/PrintStream;
7:new #27;//classjava/lang/StringBuilder
 
Search WWH ::




Custom Search