Gen类的字符串操作
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类的字符串操作的更多相关文章
- Java中的字符串操作(比较String,StringBuiler和StringBuffer)
一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...
- 一个非常好的C#字符串操作处理类StringHelper.cs
/// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:http://www.sufeinet.c ...
- C++_String_类字符串操作(转)
从百度文库找的,挺详细的,跟大家分享一下. 标红的是我觉得用的比较多,并且大家不太熟悉的. string类的构造函数: string(const char *s); //用c字符串s初始化 s ...
- C语言字符串操作总结大全
1)字符串操作 strcpy(p, p1) 复制字符串 函数原型strncpy(p, p1, n) 复制指定长度字符串 函数原型strcat(p, p1) 附加字符串 函数原型strn ...
- C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat( ...
- Java Calendar 类的时间操作
Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...
- .NET面试题解析(03)-string与字符串操作
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 字符串可以说是C#开发中最常用的类型了,也是对系统性能影响很关键的类型,熟练掌握字符串的操作非常重要. 常 ...
- c语言的字符串操作(比较详细)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- C# 格式化字符串,日期,字符串操作汇总
时间格式化 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:D ...
随机推荐
- 12-简单认识下margin
margin margin:外边距的意思.表示边框到最近盒子的距离. /*表示四个方向的外边距离为20px*/ margin: 20px; /*表示盒子向下移动了30px*/ margin-top: ...
- Attach()和Detach()函数
一.Windows对象和MFC对象的区别? MFC对象实际上并没有把整个Windows对象都包装在其中.对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对 ...
- MIT Molecular Biology 笔记5 转录机制
视频 https://www.bilibili.com/video/av7973580?from=search&seid=16993146754254492690 教材 Molecular ...
- DOS下如何打开程序
cd c: #先切回主盘,因为最开始在C:\Users\Administrator这个目录下 cd “指定文件所在的盘:” #切换到文件所在盘 print "文件目录&quo ...
- Java应用分类
Java应用分类 一.应用程序.指在操作系统上直接运行的,不是浏览器,Java环境用本机的,需要在客户端安装,Java环境可以一起安装. 1.GUI图形界面应用程序 ...
- Scala_关键字
关键字 Lazy Scala中用lazy定义的变量叫惰性变量,会实现延迟加载:惰性变量只能是不可变变量,而且只有在调用惰性变量时,才会去实列化这个变量 object ScalaLazyDemo1{ ...
- [violet2]sillyz
题意:定义S(n) = n*各数位之积,然后给定L<=R<=10^18,求有多少个n在[L,R]区间内 思路: 看了半天无从下手..看完题解才豁然开朗.. 具体思路看vani神博客吧.讲的 ...
- 数据库中表的位置,在sysdatabases中
name dbid sid mode status status2 crdate reserved category cmptlevel filename version master :: :: C ...
- 微擎开启redis memcache
微擎开启redis memcache 2018年01月20日 14:39:54 luogan129 阅读数:2161更多 个人分类: 微信开发 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- DELPHI获取宽带IP
DELPHI获取宽带IP DELPHI获取宽带IP procedure TForm1.Button1Click(Sender: TObject);varurl: string;beginurl : ...