Java学习——String类和StringBuffer类

2021/4/17 12:25:44

本文主要是介绍Java学习——String类和StringBuffer类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java学习——String类和StringBuffer类

    • 1 String类
      • 1.1 String类的初始化
      • 1.2 String类的常见操作
    • 2 StringBuffer类
    • 3 String类和StringBuffer类的不同

1 String类

1.1 String类的初始化

1.1.1使用字符串常量直接初始化一个String对象

String str="abc";

1.1.2使用String的构造方法初始化字符串对象,String类的构造方法如下:

方法声明功能描述
String()创建一个内容为空的字符串
String(String value)根据指定的字符串内容创建对象
String(char[] value)根据指定的字符数组创建对象

例:

public class Main{
    public static void main(String[] args) {
        //创建空的字符串
        String s1 = new String();
        //创建内容为asdf的字符串
        String s2=new String("asdf");
        //创建内容为字符数组的字符串
        char[] charArray=new char[]{'z','x','c'};
        String s3 = new String(charArray);
        System.out.println("qwe"+s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

1.2 String类的常见操作

方法声明
int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
int lastindexOf(int ch)返回指定字符在此字符串中最后一次出现处的索引
int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引
int lastIndexOf(String str)返回指定子字符串在此字符串中最后一次出现处的索引
char charAt(int index)返回字符串中index 位置上的字符,其中,index的取值范围是0~(字符串长度-1)
boolean endsWith(String suffix)判断此字符串是否以指定的字符串结尾
int length()返回此字符串的长度
boolean equals(Object anObject)将此字符串与指定的字符串比较
boolean isEmpty()当且仅当字符串长度为0时返回 true
boolean startsWith(String prefix)判断此字符串是否以指定的字符串开始
boolean contains(CharSequence cs)判断此字符串中是否包含指定的字符序列
String toLowerCase()使用默认语言环境的规则将String中的所有字符都转换为小写
String toUpperCase()使用默认语言环境的规则将String中的所有字符都转换为大写
static String valueOf(int i)返回 int 参数的字符串表示形式
char toCharArray()将此字符串转换为一个字符数组
String replace(CharSequence oldstr,CharSequence newstr)返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的
String[] split(String regex)根据参数regex将原来的字符串分割为若干个子字符串
String substring(int beginIndex)返回一一个新字符串,它包含从指定的beginIndex处开始直到此字符串末尾的所有字符
String substring(int beginIndex, int endIndex)返回 一个新字符串,它包含从指定的beginIndex处开始直到索引endIndex-1处的所有字符
String trim()返回一个新字符串,它去除了原字符串首尾的空格

2 StringBuffer类

由于字符串是常量,因此一旦创建, 其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StingBuffer类(也称字符串缓冲区)。StringBuffer 类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。
针对添加和删除字符的操作,String类提供了一系列的方法, 具体如表所示。
Stringuffer 类常用方法

功能描述方法声明
StringBuffer append(char c)添加参数到StringBuffer 对象中
StringBuffer insert(int offset,String str)将字符串中的offset位置插入字符串str
StringBuffer deleteCharAt(int index)移除此序列指定位置的字符
StringBuffer delete(int start,int end)删除StringBuffer对象中指定范围的字符或字符串序列
StringBuffer replace(int start,int end,String s)在StringBuffer对象中替换指定的字符或字符串序列
void setCharAt(int index, char ch)修改指定位置index处的字符序列
String toString()返回StringBuffer缓冲区中的字符串
StringBuffer reverse()将此字符序列用其反转形式取代

3 String类和StringBuffer类的不同

StringBuffer类的很多方法里面,append()insert() 方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。不同的是,append(方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符delete() 方 法用于删除指定位置的字符,setCharAt()replace() 方法用于替换指定位置的字符。

StringBuffer 类和String类有很多相似之处,初学者在使用时很容易混淆。接下来针对这两个类进行对比,简单归纳一下两者的不同,具体如下。

①String 类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可。但是如果需要对字符串中的字符进行增删操作,则使StringBuffer类。

②Sting 类覆盖了Object 类的equals()方法, 而StringBuffer 类没有覆盖Object 类的equals()方法, 具体示例如下。

String s1= new String("abc");
String s2 = new String("abc");
System. out.println(s1.equals(s2));
//打印结果为true
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb1.equals(sb2));
//打印结果为false

③String 类对象可以用操作符“+” 进行连接,而StringBuffer 类对象之间不能,具体示例如下。

String s1 = "a";
String s2 = "b";
String s3 = s1+s2;
//合法
System.out.println(s3);
//打印输出ab
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
StringBuffer sb3 = sb1+sb2;//编译出错


这篇关于Java学习——String类和StringBuffer类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程