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. (转)eclipse下配置tomcat7的几个重要问题,值得一看

    转自:http://jingyan.baidu.com/article/ab69b270ccc4792ca7189fd6.html 这段时间开始接触的servlet,今天尝试在eclipse下配置to ...

  2. 查看和杀死进程ps

    $ps -ef #查看执行的进程. $ps -aux | grep java #查看java进程 $sudo kill 进程号 [1] http://www.cnblogs.com/peida/arc ...

  3. InvocationHandler中invoke方法中的第一个参数proxy的用途

    最近在研究Java的动态代理时对InvocationHandler中invoke方法中的第一个参数一直不理解它的用处,某度搜索也搜不出结果,最后终于在stackoverflow上找到了答案. 这是原文 ...

  4. FastReport套打 和连续打印

    FastReport套打,纸张是连续的带锯齿的已经印刷好的,类似于通信公司发票这里设计的是客户销售记录.客户有两个要求:1.因为打印纸张是印刷的,明细记录只有8行,所以,如果明细记录如果不到8行,就将 ...

  5. JS学习笔记9_JSON

    1.JSON概述 JavaScript Object Natation,js对象表示法,(像XML一样)是一种数据格式,它与js有相同的语法形式 P.S.一点小历史:JSON之父是道格拉斯,<J ...

  6. WinRAR试用过期决绝方法

    一.WinRAR 试用过期决绝方法 直接去WINRAR官方下个版本装上然后这样 复制以下内容(红色)到记事本,保存为rarreg.key文件(即文件名是rarreg,扩展名是key),把这文件拷贝到W ...

  7. eclipse代码提示javadoc背景为黑色框的解决办法

    我的eclipse是近期下载的oxygen版本.不知道怎么出现了一个这个问题,鼠标悬停指向代码时应该出现的代码提示解释框,全为黑色,看不到文字.如下图 经过验证,最终解决方法为window->G ...

  8. SQL注入之PHP-MySQL实现手工注入-数字型

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎 ...

  9. jzoj4512

    01分數規畫 我們可以二分一個ans,然後化一下式子 一個總共有k個人的方案,要使(a[1]+a[2]+....+a[k])/(b[1]+b[2]+....+b[k])>=ans(a[1]+a[ ...

  10. raspberry pi wifi

    vim /etc/network/interfaces 修改 wpa-ssid 和 wpa-psk