javap的简单理解

 

参照http://blog.csdn.net/junsure2012/article/details/7099222

       java特种兵,深入理解jvm

       了解一些javap的知识。

 

这里列举下我这里接触过的常用指令吧

xconst_n    将常量压入栈顶  如iconst_1,将int常量1压入栈顶

bipush  n    将-128 到 127 压入栈顶      

sipush  n    将-32768 到32767压入栈顶

ldc        v    将int,float,String产量压入栈顶

xload_n      将第n+1个变量推送至栈顶,如fload_1 将第二float类型的变量推送至栈顶

xstore_n     将栈顶元素pop到n+1个变量中,如lstore_1则将栈顶元素保存至第二个变量中。

dup            复制栈顶数值,并且将其压入栈顶。

new            创建对象并且将对象压入栈顶。

iinc             将指定的int型变量+1

 

invokevirtual     调用实例方法

invokespecail    调用超类构造方法,实例初始化方法,实例私有方法。

invokestatic       调用静态方法

invokeinterface  调用接口方法

 

 

 

下面我就举几个简单的例子来详细说明一些我理解的javap的功能。

       1.关于变量i++

        

public class TestString {
	
	public static void main(String[] args) {
			int  a = 1  , b = 1 ,c = 1 , d =1;
			a++;
			++b;
			c=c++;
			d=++d;
			System.out.println(a+","+b+","+c+","+d);
	}
	
}

 

    

 
javap的简单理解_第1张图片
 
javap的简单理解_第2张图片
 

 

  2.关于String常量值

     

public class TestString {
	
	public static void main(String[] args) {
			String a="a" + "b" + "c";
	}
	
}

    


javap的简单理解_第3张图片
 

 

3.关于StringBuilder

   

public class TestString {
	
	public static void main(String[] args) {
			 int index=1;
       String str="my.string"+index;
	}
	
}

    
javap的简单理解_第4张图片
 

你可能感兴趣的:(javap)