1.概述

①.String是Java已经定义在Java.lang里的类,使用时无需导包

②.所有字符串都是String类的对象

③.字符串一旦赋值就不可更改

2.赋值方法

构造方法

说明

直接构造

String name="阿利斯塔"

new

public String()

创建空字符串

new

public String(String original)

根据传入字符串创建

new

public String(char []c)

根据传入字符数组创建

new

public String(byte []c)

根据传入字节数组创建

package csdn;

public class demo1 {
    public static void main(String[] args) {
        //直接构造
        String name="阿利斯塔";
        System.out.println(name);//阿利斯塔

        //new 空白字符串
        String s=new String();
        System.out.println(s);//""

        //new 指定字符串
        String s1=new String("亚托克斯");
        System.out.println(s1);//亚托克斯

        //new 指定字符数组
        char[] c={'a','b','c'};
        String s2=new String(c);
        System.out.println(s2);//abc

        //new 指定字节数组
        byte[] b={98,99,100};
        String s3=new String(b);
        System.out.println(s3);//bcd
    }
}

3.字符串比较

之前在比较基本数据类型时也有用过字符串比较

当时的做法是直接使用"=="进行比较

package csdn;

public class demo1 {
    public static void main(String[] args) {
        String s1="拉克丝";
        String s2="金克斯";
        System.out.println(s1==s2);//false
    }
}

但是要注意的是,"=="只能用于比较直接赋值的字符串,对于new的引用数据类型不适用(原因:"=="比较基本数据类型时,参与比较的是数值大小。而"=="比较引用数据类型时,参与比较的是地址值)

所以String提供了两个方法

方法

说明

boolean equals

完全一样才返回True

boolean equalsIgnoreCase

无视大小写

package csdn;

public class demo1 {
    public static void main(String[] args) {
        String s1="abc";
        String s2="Abc";

        boolean r1=s1.equals(s2);
        System.out.println(r1);//false

        boolean r2=s1.equalsIgnoreCase(s2);
        System.out.println(r2);//true
    }
}

4.遍历字符串

用到的方法:
①public char charAt(int n);   根据索引返回对应字符

②public int length();  返回字符串长度

package csdn;

import java.util.Scanner;

public class demo1 {
    public static void main(String[] args) {
        //键盘录入一个字符串
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        //遍历
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            System.out.println(c);
        }
    }
}

5.StringBuilder

StringBuilder创建后内容可变,用于提高操作效率

常用方法:

方法

说明

public StringBuilder append(all kinds)

添加数据 返回对象本身

public StringBuilder reverse()

反转内容

public int length()

返回对象长度

public String toString

将StringBuilder对象转化成String类型

package csdn;

public class demo1 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder("阿利斯塔");
        sb.append("是牛头");
        System.out.println(sb);//阿利斯塔是牛头

        int len=sb.length();
        System.out.println(len);//7

        sb.reverse();
        System.out.println(sb);//头牛是塔斯利阿

        String s=sb.toString();
        System.out.println(s);//头牛是塔斯利阿
    }
}

6.StringJoiner

StringJoiner也可以看作内容可变的容器,较StringBuilder而言,StringJoiner更简洁方便

构造方法:

public StringJoiner(间隔符号)

public StringJoiner(间隔符号,开始符号,结束符号)

常用方法:

public StringJoiner add()

添加内容,返回对象本身

public int length()

返回内容长度

public String toString()

将StringJoiner对象转换成String对象

package csdn;

import java.util.StringJoiner;

public class demo1 {
    public static void main(String[] args) {
        StringJoiner sj=new StringJoiner("~","[","]");
        sj.add("阿利斯塔").add("是牛头");
        System.out.println(sj);//[阿利斯塔~是牛头]

        int len=sj.length();
        System.out.println(len);//10

        String s=sj.toString();
        System.out.println(s);//[阿利斯塔~是牛头]
    }
}

总结:

String 表示字符串类,有基本的操作方法

StringBuilder内容可修改,可以高效拼接,进行内容反转

StringJoiner内容可修改,可以高效方便地拼接