博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String、StringBuilder和StringBuffer的区别
阅读量:2352 次
发布时间:2019-05-10

本文共 779 字,大约阅读时间需要 2 分钟。

String

  1. JVM会先在常量池查找是否存在相同的字面常量,如果存在,则直接将引用指向已经存在的字面常量;否则在运行时常量池开辟一个空间来存储该字面常量,并将引用指向该字面常量。

    String str1 = "hello world";   //"hello world"存储在常量池String str2 = "hello world";   //str2与str1地址相同,都指向常量池中的"hello world"String str3 = new String("hello world");   //str3存储在堆上
  2. String是final类型,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

  3. 对String进行操作

    过程:将str中的内容取出,与“world”相加并存入一个新new的String中,再将str指向新new的String。如果频繁进行相加的操作,资源开销大

    String str = "hello";for(int i = 0; i < 100000; i++)	str += "world";  //str += "world"; 等于StringBuilder stringBuilder = new StringBuilder(str);stringBuilder.append("world");

StringBuilder & StringBuffer

  1. 由于对String进行操作都会生成新的String,开销大。因此,需要操作字符串时,一般使用StringBuilder或StringBuffer。使用StringBuilder,只需要new一次,之后再添加只需调用方法append()
  2. StringBuffer比较StringBuilder,具有线程安全性,但效率更低

转载地址:http://ufqvb.baihongyu.com/

你可能感兴趣的文章
后台管理系统之品牌管理
查看>>
后台管理系统之商品规格管理
查看>>
后台管理系统之商品管理
查看>>
商品详情及Thymeleaf静态化
查看>>
如何安装最纯净的Windows系统,玩转重装操作系统
查看>>
RabbitMQ安装使用及数据同步
查看>>
用户中心
查看>>
授权中心
查看>>
乐优商城—购物车
查看>>
乐优商城—订单微服务
查看>>
《剑指offer》思路与实现总结--Java
查看>>
字符串数组转成矩阵
查看>>
VC++ UDP转TCP互发数据 UDP为服务端 TCP为客户端 可修改IP和端口最小化 2TCP/UDP中转
查看>>
仿养生网 帝国CMS 更新后域名栏目链接一直没变 解决方法:在后台地图--模板标签替换里直接全部替换
查看>>
微信扫码自动群发消息给所有人技术分析 之通过https请求获取微信网页版登录二维码图
查看>>
C#源码刷新网页 最小化托盘http get和post请求配置保存版权时间限制定时调用 单实例运行,如果已经运行则激活窗口到最前显示
查看>>
域名解密 商家联盟会员消费管理系统_连锁店会员积分系统 带微信(域名加密的) aqinxiaodian
查看>>
android蓝牙4.0BLE及2.0 2.1 apk 串口助手带16个自定义按键和自定义指令 字符接收 十六进制或字符发送
查看>>
爬虫采集 通用正则表达式
查看>>
织梦学习 变量的运用 添加新变量 删除新变量 添加上传视频mp4
查看>>