字符串拼接原理
来源:互联网 发布:上海趣推网络 编辑:程序博客网 时间:2024/06/01 23:35
public class hello{public static void main(String args[]){String a = "A";String b = "B";String c = a+b;System.out.println(c);}}
这一块代码到底发生了什么呢,今天看了下字节码理解了这一过程的原理,
先上图吧~
使用javap功能可以查看编译后的class文件的一些信息,具体的其他功能可以从命令javap -help 中了解.
这里用上了-c选项 对class文件进行反汇编成字节码
从字节码中可以看出,先是实例化了一个字符串A和一个字符串B,当程序执行到
String c = a+b;
这一行的时候,可以看到这时候实例化了一个StringBuilder对象,然后执行了两次append方法,将变量a和变量b添加到对象中后执行了toString赋值给变量c
最后就是输出了变量c的内容
可以发现字符串"A"+字符串"B"背后的原理其实就是new StringBuilder().append("A").append("B").toString();
今天发现直接拼接字符串和两个String变量拼接是不一样的
看下面的代码生成了几个对象
public class StringTest{public static void main(String args[]){String C = "A"+"B";String D = new String(C);}}
思考过后来从字节码中看看到底发生了什么
如图,答案是生成了两个对象,生命变量C的时候直接得到一个"AB"对象,而不是“A”对象、"B"对象以及"AB"对象
阅读全文
0 0
- 字符串拼接原理
- String字符串拼接符 “+”底层原理
- 玩玩String的字符串拼接底层原理
- 拼接字符串:
- 字符串拼接
- 字符串拼接
- 字符串拼接
- 字符串拼接
- 拼接字符串
- 拼接字符串
- 拼接字符串
- 拼接字符串
- 字符串拼接
- 拼接字符串
- 字符串拼接
- 字符串拼接
- 拼接字符串
- 字符串拼接
- 修改Linux内核参数减少squid服务器的TIME_WAIT套接字数量
- 从等待中发现瓶颈
- PHPStorm 快捷键大全(Win/Linux/Mac)
- EDA软件_Cadence_OrCAD Capture自带元件库汇总
- 自己修改select的样式(修改select右边的小三角)
- 字符串拼接原理
- springMVC无法访问JSP报404,但是又能访问controller
- db file sequential read-数据文件顺序读取
- 上层APP调用底层硬件驱动过程解析
- python中的try/except/else/finally语句
- QT之使用 QWaitCondition 同步线程小例子
- python 学习笔记
- linux 搭建lamp
- highchart columnrange自定义颜色