java中的链式编程 && 字符串的 append() 方法 和使用 “+” 拼接字符串的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java中的链式编程 && 字符串的 append() 方法 和使用 “+” 拼接字符串的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1981字,纯文字阅读大概需要3分钟。
内容图文
![java中的链式编程 && 字符串的 append() 方法 和使用 “+” 拼接字符串的区别](/upload/InfoBanner/zyjiaocheng/598/41157378ca0a48d1a1c08dd2928e878c.jpg)
在学习Java 的过程中发现 append 方法可以这样用,如下:
public static void main(String[] args) {
//创建空的字符串缓冲区
StringBuilder sb = new StringBuilder();
//添加数据(链式编程)
sb.append("Hello").append("World");
System.out.println(sb);
}
在append方法之后可以再跟一个 .append()
,根据代码格式推理,这意味着前面的整体 sb.append("Hello")
是一个对象
首先我们了解一下 StringBuilder (字符串缓冲区)类
- StringBuilder 是一个可变的字符序列,它内部存储的字符串数据是可变的
由于字符串的不可变性,在拼接字符串时,会产生大量的内存垃圾,使用 StringBuilder 类就可以解决这个问题。
当使用 append()追加数据到 StringBuilder 对象中,返回的是一个 StringBuilder 对象,也就意味着代码中的 sb.append("Hello")
整体是一个对象,所以可以使用 append 继续追加,下面我们通过 (ctrl + 鼠标左键) 来看一下底层代码
@Override
@HotSpotIntrinsicCandidate
public StringBuilder append(String str) {
super.append(str);
return this;
}
- 我们可以注意到,最后返回的是一个 this,而 this 就代表当前对象,对于 this 是这样描述的,哪个对象来调用它,它就代表谁,那么在此处就相当于我们在上面创建的字符串对象
sb
,然后通过 StringBuilder 类型来返回,所以调用方法的这一整块代码sb.append("Hello")
就相当于是 sb
那么它和使用 “+” 来拼接字符串有什么区别呢?
需要注意的是,在java中,String格式的数据是不可变类型的,例如下面的代码:
String str = "abc";
str += "d";
System.out.println(str); //打印结果 aaa
-
当我们执行以下代码时,结果为
aaa
,看起来是将str
的值 从abc
修改为了abcd
,但实际上是在内存中重新开辟了一块空间,然后存储一个abcd
重新赋值给了str
,而原来的abc
还是存在着,等待着GC(垃圾回收)来清理
这时候就会出现一种情况,因为我们每使用 “ + ” 拼接一次,程序都会内存中开辟一块空间来存储新的值,如果我们拼接了很多次的字符串,这时候内存中就会产生很多垃圾 -
而append 方法,只适用于 StringBuilder 类,同时通过 StringBuilder 创建出来的字符串对象是可变类型的,当我们使用 apend() 方法拼接字符串时,他会更改原有的数据,而不是重新开辟一块空间,这样就不至于浪费系统内存
所以建议在合适的场景下,若有大量的字符串需要拼接,优先考虑使用 append()方法
内容总结
以上是互联网集市为您收集整理的java中的链式编程 && 字符串的 append() 方法 和使用 “+” 拼接字符串的区别全部内容,希望文章能够帮你解决java中的链式编程 && 字符串的 append() 方法 和使用 “+” 拼接字符串的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。