Java中的字符串(String和StringBuilder)

Java中提供了许多对于字符串进行操作的方法,集中的表现就是String、StringBuilder和StringBuffer这三个类,他们都提供了大量的方法来对字符串进行操作,String类是不可变的,StringBuilder和StringBuffer都是可变的,其中StringBuffer还是线程安全的,所以在单线程应用中,StringBuilder的速度相对来的还快一点,String类的对象和其余的两个类的对象都是可以相互转换的,因此可以更加灵活地对字符串进行操作,这篇文章主要会介绍String和StringBuilder这两个类,其实这三个类在api文档中都可以很轻松地查到,都是在java.lang包中,写这篇文章主要是为了让自己对这两个类更加熟悉。

1.String常用方法以及使用

1.1 构造方法

1.public String(String original):   
    String s = new String("123");
2.public String(char[] value): 
    char[] arr = {'a','b','c'}; 
    String s = new String(arr);
3.public String(char[] value,int index,int count):
    截取字符数组中的一部分元素,把它变成字符串;从index开始,截取count个元素;
4.public String(StringBuilder builder);
    由StringBuilder对象生成一个String对象;

1.2 String类的判断方法

1.public boolean equals(Object anObject):
    判断两个字符串内容是否相同
2.public boolean equalsIgnoreCase(String anotherString):
    判断两个字符串内容是否相同,忽略大小写
3.public boolean startsWith(String prefix):
    判断字符串内容是否以传入的字符串内容开头
4.public boolean endsWith(String suffix):
    判断字符串内容是否以传入的字符串内容结尾

1.3 String类的获取方法

1.public int length():
    获得字符串的长度
2。public char charAt(int index):
    获得字符串的index索引的字符
3.public int indexOf(String str):
    查找字符串中传入字符串str第一次出现的索引位置
4.public String substring(int beginIndex):
    截取字符串,从beginIndex索引开始至字符串结尾
5.public String substring(int beginIndex,int endIndex):
    截取字符串,从beginIndex索引开始至endIndex结束

1.4 String类的转换方法

1.public char[] toCharArray():
    把字符串变成字符数组;
2.public String toUpperCase():
    把字符串中的字符全部转换成为大写;
3.public String toLowerCase():
    把字符串中的字符全部转换成为小写;

1.5 String类的去空格方法

public String trim():
    去除字符串两端的空格! 

1.6 String类的分割方法

public String[] split(String regex):
    根据传入的字符串来切割字符串

2.使用String类方法的一些小例子

2.1 遍历字符串

String str = "helloworld";
for (int i = 0; i < str.length(); i++) {
    System.out.print(str.charAt(i) + " ");
}

2.2 统计字符串中大写,小写及数字字符个数

Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
sc.close();

int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    if (ch >= 'A' && ch <= 'Z') {
        bigCount++;
    } else if (ch >= 'a' && ch <= 'z') {
        smallCount++;
    } else if (ch >= '0' && ch <= '9') {
        numberCount++;
    } else {
        System.out.println("该字符" + ch + "不符合最初设定");
    }
}
System.out.println("大写字母:" + bigCount + "个");
System.out.println("小写字母:" + smallCount + "个");
System.out.println("数字字母:" + numberCount + "个");

2.3 把字符串首字母大写其他字母小写

Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = sc.nextLine();
sc.close();
String s1 = str.substring(0, 1);
String s2 = str.substring(1);
String s3 = s1.toUpperCase() + s2.toLowerCase();
System.out.println(s3);

2.4 字符串反转

第一种思路:以单个字符从后往前遍历字符串,然后用一个空字符串依次将字符加起来

String str = "helloworld";        
String s = "";
for(int i =str.length()-1;i>=0;i--){
    s+=str.charAt(i);
}

第二种思路:将字符串转换为字符数组,将字符串数组反转,然后用反转后的数组构造一个字符串

String str = "helloworld";
char[] chs = str.toCharArray();
char temp;
for(int i=0;i<chs.length/2;i++){
    temp = chs[i];
    chs[i] = chs[chs.length-i-1];
    chs[chs.length-i-1] = temp;
}
String result = new String(chs);

3.StringBuilder常用方法以及使用

3.1 构造方法

1.public StringBuilder();
    StringBuilder sb = new StringBuilder();
    //创建一个StringBuilder对象
2.public StringBuilder(String str):
    String str = "你好JAVA";
    StringBuilder sb = new StringBuilder(str);

3.2 StringBuilder的增加方法

public StringBuilder append(多种类型):
    拼接多种类型的数据,并返回其本身

3.2 StringBuilder的反转方法

public StringBuilder reverse():
    实现StringBuilder的对象的反转;

4.使用StringBuilder类方法的一些小例子

4.1 按照格式打印输入数组

int arr[] ={1,3,4,6,8,9,4,7,3};
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
    if(i==arr.length-1){
        sb.append(arr[i]);
    }else{
        sb.append(arr[i]).append(", ");
    }
}
sb.append("]");
String result = sb.toString();

4.2 判断字符串是否对称

String s = "121";
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
boolean flag result.equals(s);

5.String和StringBuilder对象的相互转换

其实String和StringBuilder两个类都提供了以对方对象为参数的构造函数,因此可以很容易进行转换,还有就是StringBuilder类提供的toString()方法也能得到相应字符串的

5.1 String对象转为StringBuilder对象

使用StringBuilder的构造函数

public StringBuilder(String str):
    String str = "hello";
    StringBuilder sb = new StringBuilder(str);

5.2 StringBuilder对象转为String对象

第一种:使用构造函数

public String(StringBuilder builder);
    StringBuilder sb = new StringBuilder();
    sb.append("hello");
    String str = new String(sb);

第二种:使用StringBuilder类的toString()方法

StringBuilder sb = new StringBuilder();
sb.append("hello");
String str = sb.toString();

6.总结

通过学习这两个方法,感觉其实查询api文档并没有那么恐怖,更多地只是自己吓自己罢了,多去查的话就会变成一件习以为常的事,确实应该多查api,因为这是最准确的说明,去敲代码验证的话也没有直接查来的快,并且文档上面会有相对完整的解释,多用就熟了。

坚持原创技术分享,您的支持将鼓励我继续创作!