String类和StringBuffer类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String类和StringBuffer类相关的知识,希望对你有一定的参考价值。

一、String类

1.String类的获取功能
int length() 获取字符串的长度
char charAt(int index) 通过下标获取字符
int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(int ch,int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
int indexOf(String str,int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
String substring(int start)返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int start,int end)返回一个新字符串,它是此字符串的一个子字符串。
补充:int lastIndexOf(String str)返回指定子字符串在此字符串中最后一次出现处的索引

2.String类的转换功能
byte[] getBytes() 将字符串转换为byte数组
char[] toCharArray() 将字符串转换为char数组
static String valueOf(char[] chs) 将char数组转换为字符串
static String valueOf(int i) 将整数int转换为字符串
String toLowerCase() 将字符串中的所有字符都转换为小写
String toUpperCase() 将字符串中的所有字符都转换为大写
String concat(String str) 将指定字符串连接到此字符串的结尾

3.String类的其他功能
String replace(char old,char new)替换
String replace(String old,String new)替换
String trim()去除字符串两端空格
int compareTo(String str)按字典顺序比较两个字符串

4.String类的练习
a.把数组中的数据按照指定个格式拼接成一个字符串 举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]
b.字符串反转 举例:键盘录入”abc” 输出结果:”cba”
c.统计大串中小串出现的次数 举例:
在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次


二、StringBuffer类
1.我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
StringBuffer是线程安全的可变字符序列。
2.构造方法
public StringBuffer() 常用
public StringBuffer(int capacity)
public StringBuffer(String str) 常用

//常用
StringBuffer str1 = new StringBuffer();
System.out.println(str1.length());//长度0


//构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
StringBuffer str3 = new StringBuffer("abc");
System.out.println(str3.length());//长度3


3.String和StringBuffer比较
1.相同点:都是对一串字符的操作
2.不同点:String不可变类(定长字符串) StringBuffer是可变类(可变长字符串)

StringBuffer str1 = new StringBuffer();
StringBuffer str2 = str1.append("abc");
System.out.println(str1==str2);//true

String str3 = new String();
String str4 = str3+"abc";
System.out.println(str3==str4);//false

4.StringBuffer类的成员方法《了解》(操作之后方法返回缓冲流对象的本身)

添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
替换功能
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse()

注意:
public String substring(int start)
public String substring(int start,int end)
截取功能和前面几个功能的不同 返回值类型是String类型,本身没有发生改变

5.String和StringBuffer的相互转换
需求: A -- B的转换
我们把A转换为B,其实是为了使用B的功能。
B -- A的转换
我们可能要的结果是A类型,所以还得转回来。
如何转换:
String->StringBuffer
方式1:通过构造方法 StringBuffer sb = new StringBuffer(s);
方式2:通过append()方法 StringBuffer sb2 = new StringBuffer(); sb2.append(s);

StringBuffer->String
方式1:通过构造方法 String str = new String(buffer);
方式2:通过toString()方法 String str2 = buffer.toString();


6.面试题String,StringBuffer,StringBuilder的区别?
A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高

7.StringBuffer和数组的区别?
二者都可以看出是一个容器,装其他的数据。
但是呢,StringBuffer的数据最终是一个字符串数据。
而数组可以放置多种数据,但必须是同一种数据类型的。

8.String作为参数传递 ,StringBuffer作为参数传递

参数传递
1.基本类型(8个):形式参数的改变不影响实际参数
2.引用类型:形式参数的改变直接影响实际参数
注意:String作为参数传递,效果和基本类型作为参数传递是一样的

10.排序
冒泡 选择 插入 快速

以上是关于String类和StringBuffer类的主要内容,如果未能解决你的问题,请参考以下文章

String类和StringBuffer类的区别

String类和StringBuffer类的区别

String类和StringBuffer类

String类 StringBuilder类和StringBuffer类 日期相关的类

String类和StringBuffer类

Java基础——数组应用之StringBuilder类和StringBuffer类