java String,StringBuffer和StringBulder学习笔记
2024-08-29 02:51:22
1.String:不可改变的Unicode字符序列。
池化思想,把需要共享的数据放在池中,用一个存储区域来存放一些公用资源以减少存储空间的开销。
在String类中,以字面值创建时,回到java方法空间的串池中去查找,如果没有则会在串池里创建一个字符串对象,并返回其地址赋给对象变量,如果有就返回串池中字符串的地址,并把这个地址赋给对象变量。如果是new,则会在堆空间中创建String类对象,不会有上述的过程。
String s1="abc";//新创建,字符串常量池中没有,则会在池中创建一个串“abc”
String s2="abc";//串池中已经存在“abc”,s2会去指向“abc”而不会去创建一个新的。
String s3=new String("abc");//直接在堆中开辟一个新的空间,而不会去池中查找。
调用任何String中的方法,不会改变String自身,除非重新复制。
2.StringBuffer:可改变的Unicode字符序列。允许并发操作,是线程安全的。
String类在进行字符串连接时回显得效率很低,是因为它所产生的对象的属性是不能够修改的,当连接字符串时只能创建新的对象。
对于很多字符串连接时,应该使用StringBuffer类,这个类的对象进行字符串连接时不会有多余的中间对象生成,从而优化了效率。
String str="A"+"B"+"C"+"D";//在串池中产生的“AB”,“ABC”明显是对于对象,浪费空间。 String s=null;
StringBuffer sb=new StringBuffer("A");
sb.append("B");
sb.append("C");
sb.append("D");
s=sb.toString();
3.StringBulder:可改变的Unicode字符序列。操作同StringBuffer,不支持并发操作,非线程安全的。
最新文章
- SparkLauncher 1.6 版本bug
- cocoapods版本更新
- Installshield 打包安装包心得
- linux: centos设置ip以及连接外网
- 无法找到类:java.lang.ClassNotFoundException: com.tt.javaweb.HttpServletRequest问题解决
- ASP.NET MVC学习之视图篇(1)
- 获取平台所有接口的IP和MAC地址
- Odoo Qweb报表css丢失问题
- 一步步学习ASP.NET MVC3 (1)——基础知识
- C#的同步和异步调用方法
- 经验:Ubuntu 登陆 L2TP VPN
- POJ 2289 Jamie's Contact Groups
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
- Refit在ASP.NET Core中的实践
- 2019年华南理工校赛(春季赛)--I--炒股(简单思维水题)
- mysql 开源~canal的深度解读1
- mysql复习之一
- shell编程入门(一)
- 浅析JSONP
- [Java][Web]ServletContext 方法的应用