3-JAVA之String完美概括

String实例化实质:

字符串在String内部是通过一个char[]数组表示的.

String str = new String(char['H','e','l','l','o'])

由于String太常用了,所以编译器做了特殊处理,我们可以简写
String str = “Hello”;字符串另外一个重要特点是字符串不可变,因为内部用的private final char[],而char没有更改字符的方法.

String相关方法

//字符串索引从0开始,第一个字符代表索引0
public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";
        }
}
//两个字符串比较,必须总是使用equals()方法,不能用"=="
s1.equals(s2) 
//忽略大小写比较
s1.equalsIgnoreCase(s2)  
// 是否包含子串:
"Hello".contains("ll"); // true
//从0位开始检索,第一次查到字符'l'的索引位置
"Hello".indexOf("l"); // 2
//从0位开始检索,最后一次查到字符'l'的索引位置
"Hello".lastIndexOf("l"); // 3
//判断是否He开头的
"Hello".startsWith("He"); // true
//判断sh否lo结尾
"Hello".endsWith("lo"); // true
//截取索引号为2的后面的所有字符,包括索引号2
"Hello".substring(2); // "llo"
//截取2至4的索引号字符,不包括索引号4
"Hello".substring(2, 4); //"ll"
//使用trim()方法可以移除字符串首尾空白字符。空白字符包括空格,\t,\r,\n:
//另一个strip()方法也可以移除字符串首尾空白字符。它和trim()不同的是,类似中文的空格字符\u3000也会被移除
"\tHello\r\n ".trim(); // "Hello"
"".isEmpty(); // true,因为字符串长度为0
"  ".isEmpty(); // false,因为字符串长度不为0
"  \n".isBlank(); // true,因为只包含空白字符
" Hello ".isBlank(); // false,因为包含非空白字符
//在字符串中替换有两种方法。一种是根据字符或字符串替换,还有一种是正则表达式替换replaceAll
String s = "hello";
s.replace('l', 'w'); // "hewwo",所有字符'l'被替换为'w'
s.replace("ll", "ww"); // "hewwo",所有子串"ll"被替换为"ww"
//要分割字符串,使用split()方法,传入的也是正则表达式
String s = "A,B,C,D";
String[] ss = s.split("\\,"); // {"A", "B", "C", "D"}
//拼接字符串使用静态方法join()
String[] arr = {"A", "B", "C"};
String s = String.join("-", arr); // "A-B-C"
//将其他类型转换成字符串
String.ValueOf();
//String和char[]类型可以互相转换
char[] cs = "Hello".toCharArray(); // String -> char[]
String s = new String(cs); // char[] -> String

StringBuilder

StringBuilder意义:
对于字符串拼接java定义了特殊的写法:s = “Hello” +“OK”;这种写法的流程是每次拼接都会产生一个新的字符串,旧的字符串扔掉,大量的旧字符串会浪费内存. StringBuilder会提前创建缓存空间,当拼接字符串的时候,不产生新的字符串.这样节省了内存控件

StringBuilder sb = new StringBuilder(1024);
for (int i = 0; i < 1000; i++) {
    sb.append(',');
    sb.append(i);
}
String s = sb.toString();

但是平时的字符串拼接我们没必要用StringBuilder,直接用+就可以,因为java在编译时期就把这些优化了.
StringBuffer和StringBuilder的区别:StringBuffer是StringBuilder的老版本,现在不用了,StringBuffer是StringBuilder的线程安全版本,现在都用StringBuilder

StringJoiner

也是对字符串拼接,除了能定义拼接的间隔符之外但定义起始和截止

public class Main {
    public static void main(String[] args) {
        String[] names = {"Bob", "Alice", "Grace"};
        //中间间隔符是"," 起始Hello 结束!
        var sj = new StringJoiner(", ", "Hello ", "!");
        for (String name : names) {
            sj.add(name);
        }
        //输出HelloBob!,HelloAlice!,HelloGrace!
        System.out.println(sj.toString());
    }
}

String.join()

String还提供了一个静态方法join(),这个方法在内部使用了StringJoiner来拼接字符串,在不需要指定“开头”和“结尾”的时候,用String.join()更方便:

String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);
//结果是Bob,Alice,Grace
发布了40 篇原创文章 · 获赞 4 · 访问量 6349

猜你喜欢

转载自blog.csdn.net/oFlying1/article/details/103510341