1.通过javap命令查看class文件的字节码内容
1.1 编写一个简单的Test类:
public static void main(String[] args) {
int a = 2;
int b = 5;
int c = b ‐ a;
System.out.println(c);
}
1.2 运行该类后target目录下会生成一个class文件
1.3 进入target目录启动cmd命令窗口
1.4 通过javap命令查看该 class文件中的字节码内容
1.5 查看生成的javapTest.txt文件的内容如下
2.1 方法描述符
示例 :
The method descriptor for the method:
Object m(int i, double d, Thread t) {...}
is
(IDLjava/lang/Thread;)Ljava/lang/Object;
2.2 解读方法 字节码
2.3 图解
2.5 研究 i++与++i的不同
2.5.1 编写代码
public static void main(String[] args) { new Test01().method1(); new Test01().method2(); } public void method1(){ int i=1; int a=i++; System.out.println(a); } public void method2(){ int i=1; int a=++i; System.out.println(a); }
2.5.2 运行该类后target中会生成class类 并找到这个class的目录
2.5.3 从上图目录中输入cmd打开命令行窗口 并输入命令
2.5.4 查看Test01.txt内容
2.5.6 对比
i++:
++i:
区别:
i++
只是在本地变量中对数字做了相加,并没有将数据压入到操作栈
将前面拿到的数字1,再次从操作栈中拿到,压入到本地变量中
++i
将本地变量中的数字做了相加,并且将数据压入到操作栈
将操作栈中的数据,再次压入到本地变量中
3. 字符串拼接
public static void main(String[] args) { new Test02().m1(); new Test02().m2(); } public void m1(){ String s1 = "123"; String s2 = "456"; String s3 = s1 + s2; System.out.println(s3); } public void m2(){ String s1 = "123"; String s2 = "456"; StringBuilder sb = new StringBuilder(); sb.append(s1); sb.append(s2); String s3 = sb.toString(); System.out.println(s3); }
3.2 运行该类后target下 生成class文件 后通过命令生成字节码文件(这些步骤略详情见上面操作)
原文:https://www.cnblogs.com/szhhhh/p/12463021.html