day17

2022/3/26 23:26:28

本文主要是介绍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)
//二分查找(前提是序列是有序的!!!!)
//返回值的是元素位置索引值

 



这篇关于day17的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程