用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字节码文件.在 ...
随机推荐
- day7_python学习笔记_chapter9_文件
1. open(), file(), 作用完全相同 2. 语法: file_object = open(file_name, access_mode='r', buffering='-1') acce ...
- MapReuce 编程总结-多MapReduce执行
学习hadoop,必不可少的就是写MapReduce程序,当然,对于简单的分析程序,我们只需一个MapReduce就能搞定,这里就不提单MapReuce的情况了,网上例子很多,大家可以百度Google ...
- Android 快速选择联系人
Activity 代码如下: /* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache ...
- 15-C语言结构体
目录: 一.大型软件开发 二.头文件和static 三.结构体 四.联合 五.枚举 回到顶部 一.大型软件开发 将一个代码中的内容,拆分成多个文件,最后的可执行文件只要一个. 操作步骤: 1 原来只有 ...
- OSG选中效果展示
<OpenSceneGraph三维渲染引擎编程指南>书中选中高亮效果示例.osgFX特效 2.得到鼠标的位置 osgFX特效1.高亮,在开头的时候写了: 2.线框: #include< ...
- android和Vitamio使用比较
在开始接触udp组播的时候先使用的Vitamio,播放时候声音卡顿 画面也会出现卡顿,后来又使用了VLC,画面挺好,,但是声音卡顿.最后不断测试发现是由于设备底层驱动处理视频部分有问题,导致程序播出的 ...
- HDU 3374 String Problem (KMP+最小最大表示)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3374 [题目大意] 给出一个字符串,求出最小和最大表示是从哪一位开始的,并且输出数量. [题解] ...
- swig include使用方法
{% block content2 %} {% include "footer.html" %} {% endblock %} include语句必须放到 block模块中,不然不 ...
- GitHub Linux下使用方法
1. 在网站注册帐号,创建工程 test 进入工程,右下角会有一个项目仓库的地址.https://github.com/braverior/test.git 2.Linux下 安装github sud ...
- Oracle触发器(trigger):view,schema,database
视图trigger, instead of 我们知道如果一个view只是由一个table构成,那在view上做啥操作没太多限制.如果view是由多个table组成那在view上做啥unpdate,in ...