用javap命令反编译来分析字符串问题
public class Test {
public static void main(String[] args) throws IOException {
String s1="t";
String s2="m";
}
}
Compiled from "Test.java"
public class typ.Test extends java.lang.Object{
public typ.Test();
Code:
: aload_0
; //Method java/lang/Object."<init>":()V
: return
public static void main(java.lang.String[]) throws java.io.IOException;
Code:
: ldc #19; //String t 进入操作数栈顶
: astore_1 //String t 出操作数栈,赋值给变量1。即s1
; //String m 进入操作数栈顶
: astore_2 //String m 出操作数栈,赋值给变量2,即s2
: return
}public class Test {
public static void main(String[] args) throws IOException {
String s1="t";
String s2="t";
}
}Compiled from "Test.java"
public class typ.Test extends java.lang.Object{
public typ.Test();
Code:
: aload_0
; //Method java/lang/Object."<init>":()V
: return
public static void main(java.lang.String[]) throws java.io.IOException;
Code:
; //String t 进入操作数栈顶
: astore_1 //String t 出操作数栈,赋值给变量1,即s1
; //String t 进入操作数栈顶
: astore_2 //String t 出操作数栈。赋值给变量2。即s2
: return
}public class Test {
public static void main(String[] args) throws IOException {
String s1="tm";
String s2="t"+"m";
}
}Compiled from "Test.java"
public class typ.Test extends java.lang.Object{
public typ.Test();
Code:
: aload_0
; //Method java/lang/Object."<init>":()V
: return
public static void main(java.lang.String[]) throws java.io.IOException;
Code:
; //String tm 进入操作数栈顶
: astore_1 //String tm 出操作数栈,赋值给变量1,即s1
; //String tm 进入操作数栈顶
: astore_2 //String tm 出操作数栈,赋值给变量2。即s2
: return
}}
Compiled from "Test.java"
public class typ.Test extends java.lang.Object{
public typ.Test();
Code:
: aload_0
; //Method java/lang/Object."<init>":()V
: return
public static void main(java.lang.String[]) throws java.io.IOException;
Code:
; //String t 进入操作数栈顶
: astore_1 //String t 出操作数栈,赋值给变量1,即tmp
; //String m 进入操作数栈顶
: astore_2 //String m 出操作数栈。赋值给变量2。即s1
; //class java/lang/StringBuilder 创建StringBuilder类型对象 : dup //复制栈顶一个字长的数据,将复制后的数据压栈 : aload_1 //tmp 进入操作数栈顶
; //Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
; //Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
; //String m
; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
: astore_3
: return
}用javap命令反编译来分析字符串问题的更多相关文章
- javap命令反编译
javap命令反编译生成的是程序员可以认识的字节码文件 -help --help -? 输出此用法消息 -version 版本信息,其实是当前javap所在jdk的版本信息,不是class在哪个jdk ...
- JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
一.前言 我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候:有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的ja ...
- javap 命令 反编译代码
javap 命令 javap -c classname 一个好的分析class二进制文件的 链接 http://blog.csdn.net/pwlazy/article/details/7954169
- 使用javap进行反编译Java枚举
这是一个枚举类Day.java public enum Day { MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY(" ...
- Java反编译代码分析(一)
浅析如何读懂这种反编译过来的文件,不喜勿喷. 赋值 Node node; Node node1 = _$3.getChildNodes().item(0); node1; node1; JVM INS ...
- 反编译字节码角度分析synchronized关键字的原理
1.synchronized介绍 synchronized是java关键字.JVM规范中,synchronized关键字用于在线程并发执行时,保证同一时刻,只有一个线程可以执行某个代码块或方法:同时还 ...
- java7(1)——反编译深入理解增强的switch(读字节命令实战)
[本文介绍] 本文主要讲java_7 的改进switch的底层实现.反编译一个使用带String的switch的demo并一步步解析反编译出来的字节命令,从编译的角度解读switch的底层实现. [正 ...
- 使用javap反编译class文件
一个普通的Java类: package org.ccnt.concurrence; public class VolatileTest { public static volatile int rac ...
- @使用javap反编译Java字节码文件
在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下). 我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件.在 ...
随机推荐
- 0. chromium源代码分析 - 序
本打算在CSDN写完这系列文字,却因为在CSDN中误删了一篇blog,该篇blog被移到了回收站.然而CSDN居然没有从回收站撤销删除的操作方法.联想到之前CSDN泄密的问题,其可靠性值得怀疑.随转向 ...
- BZOJ 2762: [JLOI2011]不等式组( 平衡树 )
对不等式变形..然后就是维护一些数, 随便找个数据结构都能写吧....用double感觉会有精度误差, 分类讨论把<改成<=了很久后弃疗了, 自己写了个分数体....然后速度就被完爆了.. ...
- BZOJ 2301: [HAOI2011]Problem b( 数论 )
和POI某道题是一样的... http://www.cnblogs.com/JSZX11556/p/4686674.html 只需要二维差分一下就行了. 时间复杂度O(MAXN + N^1.5) - ...
- JAVA之GUI编程ACTION事件
package GUI; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java. ...
- while 、do...while 、for
1.while 特点:只有条件成立才会执行循环体. while陷阱: while(条件);即直接加分号 2.do while 特点:一定会执行一次循环体 3.for语句 l 初始化等可以是多句(把 ...
- linux下通过脚本实现自动重启程序的方法
无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美 ...
- QR Code於台灣各行業的行銷應用案例介紹
當走在東京的大街小巷時,在五花八門的廣告看板.雜誌.護照簽證.海關.宣傳品.廣告.旅遊和導覽手冊.產品包裝.甚至在餐廳菜單上,皆可看到上面有一組黑色神秘二維條碼圖案:QR Code,當看到有興趣的商品 ...
- Android SharedPreference最佳实践
Android提供多种方式保存应用数据,其中一种方式是SharedPreferences,使用键值对保存私有基本的数据.所有的逻辑仅基于以下三个类: SharedPreferences SharedP ...
- 刷新指定行或区 cell
//一个section刷新 NSIndexSet *indexSetA = [[NSIndexSet alloc]initWithIndex:3]; //刷新第3段 [tableview rel ...
- javascript的this指向
JavaScript 是一种脚本语言,支持函数式编程.闭包.基于原型的继承等高级功能.JavaScript一开始看起来感觉会很容易入门,但是随着使用的深入,你会发现JavaScript其实很难掌握,有 ...