day17
作者:互联网
StringBuffer类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。
而StringBuffer就可以解决这个问题
线程安全的可变字符序列
线程安全:
1、安全,代表着没有同步操作的出现,数据是安全的,但是效率低
2、不安全,代表着有同步操作出现,效率相比较安全情况,会高
3、在IT行业开发中,效率和安全一直都是一个头疼的问题
4、举例生活中有哪些线程安全或者不安全的问题
线程安全:银行相关的业务,医院取号,电影院售票 效率
线程不安全的:视频会员,博客评论,效率高
public final class StringBuffer
线程安全,可变的字符序列。
字符串缓冲区就像一个String ,但可以修改。
在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。
简单记忆:它就是一个线程安全的可变字符串
(面试题)StringBuffer与String的区别:
1、String长度和内容一旦确定就不能被改变;而StringBuffer长度和内容都是可以发生改变的
2、StringBuffer可以提前给出一个容器,StringBuffer提前给出一个缓冲区,可以进行字符串的拼接,而 不会开辟新的空间;而String来说每做一次拼接都会开辟新的空间
StringBuffer的构造方法:
1、StringBuffer()
构造一个没有字符的字符串缓冲区,初始容量为16个字符。
2、StringBuffer(int capacity)
构造一个没有字符的字符串缓冲区和指定的初始容量。
3、StringBuffer(String str)
构造一个初始化为指定字符串内容的字符串缓冲区。
StringBuffer的方法:
public int capacity()
返回当前容量。 容量是新插入字符可用的存储量,超过此值将进行分配。
public int length()
返回长度(字符数)。
添加功能
public StringBuffer append(String str)
将指定的字符串附加到此字符序列。
实际上操作的是调用方法的StringBuffer对象,返回的也是同一个对象。
public StringBuffer insert(int offset,String str)
将字符串插入到此字符序列中。
String参数的String按顺序插入到指定偏移量的该序列中,向上移动原始位于该位置的任何字符,并将该序列的长度增加到参数的长度
删除功能
public StringBuffer deleteCharAt(int index)
删除char在这个序列中的指定位置。 该序列缩短了一个char 。
public StringBuffer delete(int start,int end)
删除此序列的子字符串中的字符。子串开始于指定start并延伸到字符索引end - 1
替换功能
public StringBuffer replace(int start,int end,String str)
这里依旧是含头不含尾的[start,end),将范围内的内容进行替换
反转功能
public StringBuffer reverse()导致该字符序列被序列的相反代替。
如果序列中包含任何替代对,则将它们视为单个字符进行反向操作。
因此,高低替代品的顺序从未被扭转过。
在执行reverse方法之前,让n为该字符序列的字符长度(不是char值的长度)。
截取功能
public String substring(int start)
指定一个位置开始截取
public String substring(int start,int end)
依旧是含头不含尾
String和StringBuffer的相互转换
例:A,B
A--B,将A类型转成B类型,目的是为了使用B类型中的功能
B--A,再把B类型转成A类型,目的是可能最终的结果需要A类型,所以再把它转化回来
String类型与StringBuffer类型没有任何关系,没有继承关系,属于不同的类,不能直接赋值
String ---> StringBuffer
方式1:通过构造方法的方式进行转换
方式2:使用StringBuffer类中的append()方法
StringBuffer --> String
方式1:调用StringBuffer中截取方法
方式2:调用toString()方法(最常用的方式之一)
方式3:使用String类的构造方法
String,StringBuffer,StringBuilder的区别
1、String的内容和长度不可变;而StringBuffer和StringBuilder的长度和内容可变
2、StringBuffer是线程安全的,数据安全,效率低;
StringBuilder是线程不安全的,数据不安全,效率高
StringBuffer和数组的区别
1、StringBuffer中只能存放字符串。
而数组既可以存放基本数据类型元素,也可以存放引用数据类型的元素,但是同一个数组只能存放同一种数据类型。
2、StringBuffer的长度是可变的,而数组的长度一旦定义就不能改变。
(相同点):都可以进行下标索引取值。
String作为参数传递和StringBuffer作为参数传递
当StringBuffer作为参数传递的时候,谁进行了操作,谁就发生了变化
Arrays工具类:
该类包含用于操作数组的各种方法(如排序和搜索)。
需要掌握的三个方法:
public static String toString(int[] a)
//遍历数组之后输出
public static void sort(int[] a) //底层原理其实是快速排序
//对数组中的数据进行排序
public static int binarySearch(int[] a,int key)
//二分查找(前提是序列是有序的!!!!)
//返回值的是元素位置索引值
标签:字符,String,int,StringBuffer,day17,序列,public 来源: https://www.cnblogs.com/cpfhome/p/16060561.html