Bytecode Demo Using javap

 

Download LoopCompare.java source file

C:\Temp>type Greet1.java
// Traditional first program, display a friendly greeting!
// Written by Wayne Pollock, Tampa, FL USA, 1999

class Greet1
{
    public static void main ( String [] args )
    {
        System.out.println( "Hello, World!" );
    }
}

C:\Temp>javac Greet1.java
C:\Temp>javap -c Greet1
Compiled from "Greet1.java"
class Greet1 extends java.lang.Object{
Greet1();
 Code:
 0: aload_0
 1: invokespecial   #1; //Method java/lang/Object."<init>":()V
 4: return

public static void main(java.lang.String[]);
 Code:
 0: getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
 3: ldc     #3; //String Hello, World!
 5: invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
 8: return
}


C:\Temp>type LoopCompare.java
// Loop comparison - Use to show bytecode for bycode demo with javap.
// Written by Wayne Pollock, Tampa, FL USA, 2005

class LoopCompare
{
    public static void main ( String [] args )
    {
       for ( int i = 0; i < 5; ++i )
          System.out.println( "for loop" );

       int i = 0;
       while ( i < 5 )
       {
          System.out.println( "while loop" );
          ++i;
       }
    }
}

C:\Temp>javac LoopCompare.java
C:\Temp>javap -c LoopCompare
Compiled from "LoopCompare.java"
class LoopCompare extends java.lang.Object{
LoopCompare();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
 Code:
 0: iconst_0
 1: istore_1
 2: iload_1
 3: iconst_5
 4: if_icmpge       21
 7: getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
10: ldc     #3; //String for loop
12: invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
15: iinc    1, 1
18: goto    2

21: iconst_0
22: istore_1
23: iload_1
24: iconst_5
25: if_icmpge       42
28: getstatic       #2; //Field java/lang/System.out:Ljava/io/PrintStream;
31: ldc     #5; //String while loop
33: invokevirtual   #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
36: iinc    1, 1
39: goto    23
42: return
}