Java StringBuffer 与StringBuilder 类的介绍与区别
- StringBuffer类(用来解决String类的内存浪费问题)
- 构造方法
- 方法
- public synchronized StringBuffer append (String str);
- public synchronized StringBuffer insert(int i , String str/int i/char/...)
- public synchronized StringBuffer delete(int start , int end);
- public synchronized StringBuffer deleteCharAt(int index);
- public synchronized StringBuffer replace(int start, int end, String str)
- public synchronized StringBuffer reverse()
- public synchronized String substring(int start)
- public synchronized String substring(int start, int end)
- StringBuilder类
- StringBuffer与StringBuilder共同点与区别
- synchronized关键字的作用
StringBuffer类(用来解决String类的内存浪费问题)
- 由于
String类型创建字符串每次改变后都会创建新的对象,旧的对象地址不会及时的被Java垃圾回收机制回收,造成内存的浪费 - **所以我们可以引用
StringBuffer类来处理字符串,StringBuffer类带缓冲区,弥补了String不可改变字符串的缺点,char[] value是StringBuffer类中的数组,默认16长度,装满16元素后会进行数组扩容(数组长度*2+2) **
构造方法
public StringBuffer(); 无参构造
public StringBuffer( String ); 有参构造,初始化字符串
public StringBuffer( int );有参构造,初始化缓冲区大小,即底层数组大小
方法
StringBuffer stringBuffer = new StringBuffer();//无参构造
StringBuffer stringBuffer1 = new StringBuffer("abc");//有参构造
StringBuffer stringBuffer2 = new StringBuffer(123);//有参构造指定数组长度
public synchronized StringBuffer append (String str);
stringBuffer.append("abc");
//结果:拼接字符串 相当于String中的'+';
public synchronized StringBuffer insert(int i , String str/int i/char/...)
stringBuffer.insert(1,"123");
//从指定位置,插入字符串/整数/字符...
public synchronized StringBuffer delete(int start , int end);
stringBuffer.delete(1, 3);
//删除指定片段,包含开始位置,不包含结束位置
public synchronized StringBuffer deleteCharAt(int index);
stringBuffer.deleteCharAt(0);
//删除指定位置;
public synchronized StringBuffer replace(int start, int end, String str)
stringBuffer.replace(0,stringBuffer.length(), "123");
//替换指定区域字符串;
public synchronized StringBuffer reverse()
stringBuffer.reverse();
//翻转字符串
public synchronized String substring(int start)
String str1 = stringBuffer.substring(1);
//从某一位置开始截取字符串,返回String类型,注意:不会改变原来类里面的字符串
public synchronized String substring(int start, int end)
String str2 = stringBuffer.substring(1,2)
//截取某一区域的字符串,不包含结束位置,返回值为String,不会改变原来的字符串
StringBuilder类
方法与StringBuffer类似,区别是StringBuffer的方法被synchronized修饰,而StringBuilder方法没有被修饰
StringBuffer与StringBuilder共同点与区别
共同点
- 字符串是可以改变的,不会创建对象,变的只是底层的数组在改变
区别
- 由于
StringBuffer的方法是被synchronized修饰的,表示一次只允许一个请求进入方法,适合多线程场景 StringBuilder不是加锁的(即它的方法不被synchronized修饰),一次可以允许多个请求进入方法适合单用户操作
synchronized关键字的作用
synchronized关键字的作用如下:
synchronized是一种Java语言中的关键字,用于控制多线程并发访问共享资源的一种机制。synchronized可以保证在同一时刻只有一个线程可以访问共享资源,从而避免了多个线程同时访问共享资源所带来的数据不一致性和线程安全问题。synchronized关键字可以将任意的非空对象作为锁,在Java虚拟机JVM中,对象的锁被称为对象监视器(Object Monitor),每个对象都具有其对象监视器,同一时间,一个对象的监视器只能被一个线程所持有。
Java StringBuffer 与StringBuilder 类的介绍与区别的更多相关文章
- Java StringBuffer和StringBuilder类
Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...
- Java 12 - Java StringBuffer和StringBuilder类
Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...
- Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...
- java -> StringBuffer与StringBuilder类
字符串缓冲区 StringBuffer类 在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区. 查阅StringBuffer的API, ...
- 20180715-Java StringBuffer和StringBuilder类
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(& ...
- JAVA String、StringBuffer、StringBuilder类解读
JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...
- Java ——String 类 StringBuffer 和 StringBuilder类 随机字符
本节重点思维导图 String 类 创建字符串 String str = "I love ai"; 在代码中遇到字符串常量时,"I love ai",编译器会使 ...
- String、StringBuffer和StringBuilder类的区别
Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...
- StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...
- AJPFX关于StringBuffer,StringBuilder类 总结(一)
StringBuffer,StringBuilder类 StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高 StringBuffer:概述1) ...
随机推荐
- Swagger2的介绍和使用
Swagger2介绍 前后端分离开发模式中,api文档是最好的沟通方式. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 及时性 (接口变 ...
- The request client is not a secure context and the resource is in more-private address space `privat
Chrome跨域问题:has been blocked by CORS policy: The request client is not a secure context and the resou ...
- dojo\dart脚本编程语言
Dojo是一个用于构建高效.可扩展的Web应用程序的开源JavaScript框架.它提供了一系列功能丰富的模块和组件,包括DOM操作.事件处理.异步编程.动画效果等.Dojo还具有强大的用户界面(UI ...
- 力扣238(java)-除自身以外数组的乘积(中等)
题目: 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 . 题目数据 保证 数组 nums之中任意元素的全 ...
- 力扣92(java&python)-反转链表Ⅱ(中等)
题目: 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . ...
- 浅谈专有云MQ存储空间的清理机制
简介: 浅谈专有云MQ存储空间的清理机制 在近⼀年的项⽬保障过程中,对专有云MQ产品的存储⽔位清理模式⼀直存疑,总想一探究竟但又苦于工作繁忙.精力有限,直到最近⼀次项⽬保障过程中再次出现了类似的问题, ...
- 配置审计(Config)配合开启OSS防盗链功能
简介: 本文作者:紫极zj 本文将主要介绍利用[配置审计]功能,如何快速发现企业上云过程中,针对未配置防盗链的 OSS Bucket 定位及修复案例. 前言 配置审计(Config)将您分散在各地域的 ...
- dotnet C# 反射扫描程序集所有类型会不会触发类型静态构造函数
在 dotnet 里面,有很多框架都喜欢扫描程序集进行初始化逻辑,在扫描程序集的所有类型的时候,相当于碰到所有类型.而某个类型的静态构造函数将会在某个类型被使用之前被 CLR 调用,那么扫描类型是否会 ...
- dotnet 对指针转换为结构体多个不同方法的性能分析
在 dotnet 里面,拿到一个指针,可以有多个不同的方法转换为结构体,本文将来告诉大家这几个方法的性能的差别 特别感谢性能优化狂魔 Stephen Toub 大佬的指导 在 WPF 框架开发中,有小 ...
- 2018-2-13-win10-uwp-从StorageFile获取文件大小
title author date CreateTime categories win10 uwp 从StorageFile获取文件大小 lindexi 2018-2-13 17:23:3 +0800 ...