public void t(String d){
	final String str = "b";
	String s = "a"+"c"+str+d;
}

class文件反编译后内容如下:

public void t(String d) {
        String str = "b";
        (new StringBuilder()).append("acb").append(d).toString();
}

则被编译的class文件如下:  

public class com.test19.Test07
  SourceFile: "Test07.java"
  Utf8 1533966651178Utf8 1533966851637minor version: 0
  major version: 51
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #9.#30         //  java/lang/Object."<init>":()V
   #2 = String             #31            //  b
   #3 = Class              #32            //  java/lang/StringBuilder
   #4 = Methodref          #3.#30         //  java/lang/StringBuilder."<init>":()V
   #5 = String             #33            //  acb
   #6 = Methodref          #3.#34         //  java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   #7 = Methodref          #3.#35         //  java/lang/StringBuilder.toString:()Ljava/lang/String;
   #8 = Class              #36            //  com/test19/Test07
   #9 = Class              #37            //  java/lang/Object
  #10 = Utf8               <init>
  #11 = Utf8               ()V
  #12 = Utf8               Code
  #13 = Utf8               LineNumberTable
  #14 = Utf8               CharacterRangeTable
  #15 = Utf8               LocalVariableTable
  #16 = Utf8               this
  #17 = Utf8               Lcom/test19/Test07;
  #18 = Utf8               t
  #19 = Utf8               (Ljava/lang/String;)V
  #20 = Utf8               d
  #21 = Utf8               Ljava/lang/String;
  #22 = Utf8               str
  #23 = Utf8               s
  #24 = Utf8               SourceFile
  #25 = Utf8               Test07.java
  #26 = Utf8               SourceID
  #27 = Utf8               1533966651178
  #28 = Utf8               CompilationID
  #29 = Utf8               1533966851637
  #30 = NameAndType        #10:#11        //  "<init>":()V
  #31 = Utf8               b
  #32 = Utf8               java/lang/StringBuilder
  #33 = Utf8               acb
  #34 = NameAndType        #38:#39        //  append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  #35 = NameAndType        #40:#41        //  toString:()Ljava/lang/String;
  #36 = Utf8               com/test19/Test07
  #37 = Utf8               java/lang/Object
  #38 = Utf8               append
  #39 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;
  #40 = Utf8               toString
  #41 = Utf8               ()Ljava/lang/String;
{
  public com.test19.Test07();
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>                                                      ":()V
         4: return
      LineNumberTable:
        line 34: 0
      CharacterRangeTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       5     0  this   Lcom/test19/Test07;

  public void t(java.lang.String);
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
         0: ldc           #2                  // String b
         2: astore_2
         3: new           #3                  // class java/lang/StringBuilder

         6: dup
         7: invokespecial #4   // Method java/lang/StringBuilder."<init>":()V

        10: ldc           #5   // String acb
        12: invokevirtual #6   // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: aload_1
        16: invokevirtual #6   // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: invokevirtual #7   // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        22: astore_3
        23: return
      LineNumberTable:
        line 63: 0
        line 64: 3
        line 65: 23
      CharacterRangeTable:
             0,  2,   fc10,   fc1a,    1        //  0,  2,   63:16,   63:26, sta                                                      tement
             3, 22,  1000a,  1001c,    1        //  3, 22,   64:10,   64:28, sta                                                      tement
             0, 23,   f819,  10402,    2        //  0, 23,   62:25,   65:02, blo                                                      ck
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      24     0  this   Lcom/test19/Test07;
               0      24     1     d   Ljava/lang/String;
               3      21     2   str   Ljava/lang/String;
              23       1     3     s   Ljava/lang/String;
}

  

Gen类的字符串操作的更多相关文章

  1. Java中的字符串操作(比较String,StringBuiler和StringBuffer)

    一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...

  2. 一个非常好的C#字符串操作处理类StringHelper.cs

    /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:http://www.sufeinet.c ...

  3. C++_String_类字符串操作(转)

    从百度文库找的,挺详细的,跟大家分享一下. 标红的是我觉得用的比较多,并且大家不太熟悉的. string类的构造函数: string(const char *s);     //用c字符串s初始化 s ...

  4. C语言字符串操作总结大全

    1)字符串操作 strcpy(p, p1)  复制字符串  函数原型strncpy(p, p1, n)   复制指定长度字符串  函数原型strcat(p, p1)   附加字符串  函数原型strn ...

  5. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  6. Java Calendar 类的时间操作

    Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...

  7. .NET面试题解析(03)-string与字符串操作

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 字符串可以说是C#开发中最常用的类型了,也是对系统性能影响很关键的类型,熟练掌握字符串的操作非常重要. 常 ...

  8. c语言的字符串操作(比较详细)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  9. C# 格式化字符串,日期,字符串操作汇总

    时间格式化 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:D ...

随机推荐

  1. SAX vs. DOM (Event vs. Tree)

    http://www.saxproject.org/event.html Events vs. Trees(大XML文档用SAX) There are two major types of XML ( ...

  2. 通过Windows API实现的MDI简易程序

    ## #include <windows.h> #include <tchar.h> HINSTANCE hInst; ATOM WindowRegister(WNDPROC ...

  3. Java安全技术

    分类     Java平台安全,即JRE安全     开发Java程序(普通程序,服务,applet)安全,即提供安全的开发工具和服务.   用法     用签名和安全策略控制远程的资源访问

  4. shell 命令之 crontab

    crontab是shell命令中的定时任务: crontab -e 进入当前定时任务的vim页面 每行是一个独立的定时脚本,使用和vim的语法部署定时任务 如下图: 脚本执行周期设置 可以用下面的网页 ...

  5. vlookup返回多个结果

    http://www.360doc.com/content/12/1021/15/7665211_242782107.shtml =IFERROR(VLOOKUP(D2&ROW(A1),IF( ...

  6. Android-Java-面向对象与面向过程举例

    例子一: 面向过程 在生活中的体现: 李四去饭店吃饭,进入风华高档餐饮店后,首先不理服务员,然后冲进厨房,推开厨师,自己开煤气,自己切菜,自己炒菜,自己调料,炒好后自己端出来,然后吃,吃完后 买单 面 ...

  7. Django:查询后,分页功能为全部对象分页,丢失查询查询参数

    问题: 原始的链接为 http://127.0.0.1:8000/article/list-article-titles-bysomeone/guchen/?column=django 有一个colu ...

  8. WordPress建站指南(1)

    写在前面: 3月份用10天零碎时间火速完成了建站,后台95%的工作都交给了WP(WordPress).如果想偷懒的话,WP是一个绝好的选择,估计有个小半天就建完收工了. 想有片自己的小花园,可是不会P ...

  9. C#Winfrom数据库读取日期(年月日格式转换)

    显示类型:2018-6-1 //说明:data_time.Text 控件名文本值 :dataset.Tables[0].Rows[0]["art_time"]  数据集.表名.[行 ...

  10. .net图表之ECharts随笔05-不同01的语法步骤

    找了好久,一直没找到可用的热力图heatmap.js. 应该说,使用01中的语法一直都无法实现热力图.只能说我太菜了... 现在急于求成,我找了另一种语法来调用ECharts.此种语法的js文件集是从 ...