一,String类

1.String类型定义:

 Java中数据类型分为基本数据类型和引用数据类型两大类,而String类型就属于引用数据类型,但是String类型并不是字符串,而是Java的一个类,Java通过String类型来操作字符串

String类是最终类用final修饰,不能被其他类继承

2.字符串特性:

字符串是操作系统上提供的一种可用于操作和表达多个字符类型组合的一种结构

a.面值内容不可以发生改变

b.同样的元素在内存中不会出现第二次

3. String常用的方法:

int length():返回字符串的长度

char charAt(int index):返回指定索引处的字符

boolean isEmpty():判断字符串是否为空

String toLowerCase():将字符串中的所有字符转换为小写

String toUpperCase():将字符串中的所有字符转换为大写

String trim():返回字符串的副本,去掉前导空白和尾部空白,中间的空白不会被去掉

boolean equals(Object obj):比较字符串的内容是否相同

boolean equalsIgnoreCase(String anotherString):忽略大小写,比较字符串的内容是否相同String concat(String str):将指定字符串连接到此字符串的结尾,等价于用“+”

int compareTo(String anotherString):比较两个字符串的大小

String substring(int beginIndex):返回从beginIndex到末尾的子字符串

String substring(int beginIndex, int endIndex):返回从beginIndex到endIndex前一位的子字符串,不包括endIndex

boolean endsWith(String suffix): 判断字符串是否以指定的后缀结束

boolean startsWith(String prefix):判断字符串是否以指定的前缀开始

boolean startsWith(String prefix, int toffset):判断字符串在指定索引开始的子字符串是否以指定前缀开始

boolean contains(CharSequence s):判断当前字符串中是否包含指定的字符串

int indexOf(String str):返回指定子字符串在当前字符串中第一次出现处的索引

int indexOf(String str, int fromIndex):返回从指定的索引后,指定子字符串在当前字符串中第一次出现处的索引

int lastIndexOf(String str):返回指定子字符串在当前字符串中最后一次出现处的索引

int lastIndexOf(String str, int fromIndex):返回从指定的索引后,指定子字符串在当前字符串中最后一次出现处的索引

注:indexOf和lastIndexOf方法如果未查找到指定子字符串时,返回值都为-1

String replace(char oldChar, char newChar):替换当前字符串中指定的子字符串

String[] split(String regex):根据指定的符号拆分当前字符串,然后返回一个String数组

/**
 * @author GY  2022/12/2  14:58
 * @version 1.0
 */
public class Demo02 {
    public static void main(String[] args) {
        String s1 = "abcdef";
        char ch = s1.charAt(3);
        System.out.println(ch);

        String s2 = s1.concat("opq");
        System.out.println(s2);

        boolean b1 = s1.contains("opq");
        boolean b2 = s2.contains("opq");
        System.out.println(b1);
        System.out.println(b2);

        String s3 = "yangzi.jpg";
        boolean b3 = s3.endsWith(".jpg");
        System.out.println(b3);

        byte[] bytes1 = s1.getBytes();

        String s4 = "abcdefgopqrstdef";
        int index1 = s4.indexOf('d');
        int index2 = s4.indexOf("def");
        System.out.println(index1);
        System.out.println(index2);
    }
}

 二,String,StringBuffer,StringBuilder

String,StringBuffer,StringBuilder的区别:

String               不可变,每次做操作的时候都会在常量池里生成新的字符串               

StringBuffer      可变,操作的速度快,当缓存容量不够时会自动扩容,               多线程安全    

StringBuilder     可变速度比StringBuffer更快,                                                     单线程不安全

String和StringBuilder最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可以修改。频繁修改字符串的情况考虑使用StringBuilder。
注意:String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:
String变为StringBuilder: 利用StringBuilder的构造方法或append()方法
StringBuilder变为String: 调用toString()方法