String StringBuffer StringBuilder 对比
2024-08-24 00:31:00
1、StringBuffer是线程安全的,StringBuilder是非线程安全的
2、对String的修改其实是new了一个StringBuilder并调用append方法,然后调用toString返回一个新的String。 StringBuffer是在StringBuilder基础上加锁,加锁是一个重量级的操作,需要调用操作系统内核来实现,比较耗时。 因此效率明显有:String<StringBuffer<StringBuilder;
但是这个并不是绝对的,因为JVM会对String进行优化,譬如
3、
String str = "i"+"love"+"java";
其中的字符串在编译时就能确认,编译器会直接将其拼接成一个字符串放在常量池:"i love java";
但是若是String a = "i"; String b = "love"; String c = "java";
String str = a+b+c;
只有运行时才能确认str最终是什么,编译器并不会进行优化,是通过StringBuilder实现的。
3、
String str = "i"+"love"+"java";
其中的字符串在编译时就能确认,编译器会直接将其拼接成一个字符串放在常量池:"i love java";
但是若是String a = "i"; String b = "love"; String c = "java";
String str = a+b+c;
只有运行时才能确认str最终是什么,编译器并不会进行优化,是通过StringBuilder实现的。
最新文章
- node-sass安装不成功的解决方案
- Hibernate+Oracle注解式完整实例
- Form Submit表单提交
- 运用CSS和JS写的大图轮播-带箭头
- Web - 客户端存储的几种方式
- Android 保存联系人,包括部门\职位\传真\地址\照片
- linux编程之线性表
- 找到的两个php爬虫,分享一下
- [TypeScript] Stopping a TypeScript Build When Errors Are Found
- Linux下使用Eclipse开发C/C++程序
- Leetcode题解(十六)
- php多个文件上传
- 解决IE中placeholder的兼容问题
- SQL Server数据库优化的10多种方法
- leetcode算法:Distribute Candies
- ssh转发代理:ssh-agent用法详解
- 用HTML做登录网页
- c# 后台分页 jqgrid
- 性能测试—JMeter 常用元件(四)
- Centos7查询开机启动项服务
热门文章
- shell for mysql backup in linux
- 洛谷P4779 Dijkstra 模板
- JavaScript高级程序设计中第2、3章中细节知识点
- PTA 02-线性结构4 Pop Sequence (25分)
- [luoguP1169] [ZJOI2007]棋盘制作(单调栈)
- [HDU4417]Super Mario(主席树+离散化)
- 潜伏者(codevs 1171)
- 安装redis和phpredis模块
- HDU——2119 Matrix
- POJ 1724 【存在附加约束的最短路问题】【优先队列】