1、String类

之前介绍了char类型,它只能表示单个字符,不能表示由多个字符连接而成的字符串。
在Java语言中将字符串作为对象来处理,可以通过java.lang包中的String类来创建字符串对象。
声明字符串
在Java语言中字符串必须包含在一对双引号(“ ”)内;而双引号(“ ”)内的数据也都是字符串,不可作为其他数据来使用。

声明字符串变量
语法格式:
String:指定该变量为字符串类型。
str:任意有效的标识符,表示字符串变量的名称。
**注意:**声明字符串变量必须经过初始化才能使用,否则编译器会报出“变量未被初始化错误”

创建字符串
在Java语言中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。
String类的常用构造方法:

  1. String(char a[ ])
    用一个字符串数组a创建String对象。
  2. String(char a[],int offset,int length)
    提取字符数组a中的一部分创建一个字符串对象。
    参数offset表示开始截取字符串的位置,length表示截取字符串的长度。
  3. String(char[] value)
    该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。
  4. 除通过以上几种使用String类的构造方法来创建字符串变量外,还可以通过字符串常量的引用赋值给一个字符串变量。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        System.out.println("(1)---------");
        char a[] = {'g','o','o','d'};
        String b = new String(a);
        System.out.println(b);
        System.out.println("(2)---------");
        String c = new String(a,1,2);
        System.out.println(c);
        System.out.println("(3)---------");
        String d = new String(a);
        System.out.println(d);
        System.out.println("(4)---------");
        String str1,str2;
        str1 = "we are students";
        str2 = "we are students";
        System.out.println(str1);
        System.out.println(str2);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言


注意:此时str1与str2引用相同的字符串常量,因此具有相同的实体。

2、连接字符串

1、连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个运算符并产生一个String对象。
2、连接其他数据类型
将字符串与其他数据类型进行连接,会将这些数据直接转换成字符串。
代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        System.out.println("(1)---------");
        String a = new String("Hello");
        String b = new String("World");
        String c = a +" "+b;
        System.out.println(c);
        System.out.println("(2)---------");
        int booktime = 4;
        float pracrice = 2.5f;
        System.out.println("我每天花费"+booktime+"小时看书;"
        +pracrice+"小时上机练习");
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言_02


注意:只要“+”运算符的一个操作数是字符串,编译器就会自动调用toString方法将另一个操作数转换成字符串形式。

3、获取字符串信息

1、获取字符串长度使用String类的length()方法可获取声明字符串对象的长度
语法如下:
str.length();
其中str为字符串对象。
注意:返回的字符串长度包括字符串中的空格。
2、字符串查找
String类提供两种查找字符串的方法,即indexOf()与lastIndexOf()方法。两者都允许在字符串中搜索指定条件的字符或字符串。前者返回搜索字符或字符串首次出现的位置,后者返回的是最后一次出现的位置。

  1. indexOf(String s)
    该方法用于返回参数字符串s在指定字符串首次出现的索引位置。当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法的返回值是-1。
    语法如下:
    str.indexOf(substr)
    str:任意字符串对象。
    substr:要搜索的字符串。
  2. lastIndexOf(String str)
    该方法用于返回指定字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从字符串的结尾处,从右向左反向查找指定的字符串,如果找到指定字符串,则返回该字符串中第一个字符的索引;如果没有查找到该字符串,该方法返回-1。
    语法如下:
    str.lastIndexOf(substr)
    str:任意字符串对象。
    substr:要搜索的字符串。
    注意:如果lastIndexOf()方法中的参数是空字符串“”,则返回的结果与调用该字符串length方法的返回结果相同。
  3. 获取指定索引位置的字符
    使用charAt()方法可将指定索引处的字符返回。
    语法如下:
    str.charAt(int index)
    str:任意字符串
    index:整型值,用于指定要返回字符的下标。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        System.out.println("(1)---------");
        String a = new String("Hello");
        String b = new String("World");
        String c = a +" "+b;
        System.out.println(c);
        int size = c.length();
        System.out.println(size);
        System.out.println("(2)---------");
        int size1 = c.indexOf("o");
        System.out.println(size1);
        int size2 = c.lastIndexOf("o");
        System.out.println(size2);
        int size3 = c.indexOf("or");
        System.out.println(size3);
        int size4 = c.indexOf("orr");
        System.out.println(size4);
        int size5 = c.indexOf("");
        System.out.println(size5);
        int size6 = c.lastIndexOf("");
        System.out.println(size6);
        System.out.println("(3)---------");
        char mychar = c.charAt(6);
        System.out.println("字符串c中索引位置是6的字符为:"+ mychar);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言_03

4、字符串操作

1、获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。
substring()方法被两种不同的方法重载,来满足不同的需求。

  1. substring(int beginIndex)
    该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
    语法如下:
    str.substring(int beginIndex)
    beginIndex:指定从某一索引位置开始截取字符串。
  2. substring(int beginIndex,int endIndex)
    该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        String a = "Hello";
        String b = "World";
        String c = a +" "+b;
        System.out.println(c);
        String substr1 = c.substring(6);
        System.out.println("(1)---------");
        System.out.println(substr1);
        System.out.println("(2)---------");
        String substr2 = c.substring(6,8);
        System.out.println(substr2);

    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_java 获取字符之间的字符串_04

2、去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法如下:
str.trim()
str:任意字符串。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        String a = "Hello";
        String b = "World";
        String c ="   "+ a +" "+b+"    ";
        String d = a + "   " + b;
        System.out.println(c);
        System.out.println(d);
        String c1 = c.trim();
        String d1 = d.trim();
        System.out.println("------去除空格后------");
        System.out.println(c1);
        System.out.println(d1);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言_05


注意:只针对字符串前导空格和尾部空格。

3、字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。
语法如下:
str.replace(char oldChar,char newChar)
ordChar:要替换的字符或字符串。
newChar:用来替换原来字符串的内容。
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。如果重复出现多次,则会将所有oldChar全部替换成newChar。
注意字符oldChar的大小写要与原字符串中字符的大小写保持一致。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        String a = "Hello";
        String b = "World";
        String c = a + " " + b;
        System.out.println(c);
        String c1 = c.replace("l","L");
        System.out.println(c1);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_字符串_06

4、判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。

  1. starsWith()方法
    该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。
    语法如下:
    str.starsWith(String prefix)
    prefix:指作为前缀的字符。
  2. endsWith()方法
    该方法用于判断当前字符串是否为以给定的字符串结束。
    语法如下:
    str.endsWith(String suffix)
    suffix:指作为后缀的字符串。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg){
        String a = "Hello";
        String b = "World";
        String c = a + " " + b;
        System.out.println(c);
        boolean d = c.startsWith("H");
        boolean d1 = c.startsWith("h");
        System.out.println(d);
        System.out.println(d1);
        boolean e = c.endsWith("ld");
        boolean e1 = c.endsWith("D");
        System.out.println(e);
        System.out.println(e1);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_java_07

5、判断字符串是否相等
对字符串对象进行比较不能简单的使用比较运算符“==”,比较运算符比较的是两个字符串的地址是否相同。
要比较两个字符串内容是否相等,应该使用equals()方法和equalsIgnoreCase()方法。

  1. equals()方法
    如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。
    语法如下:
    str.equals(String otherstr)
    str、otherstr是两个要比较的字符串对象。
  2. equalsIgnoreCase()方法
    使用equals()方法比较时对字符串区分大小写,而equalsIgnoreCase()方法则是在忽略大小写的情况下进行比较,返回结果任为Boolean类型。
    语法如下:
    str.equalsIgnoreCase(String otherstr)
    str、otherstr是两个要比较的字符串对象。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg) {
        String a = "Hello";
        String b = "World";
        String c = a + " " + b;
        String d = "Hello World";
        String e = "hello world";
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        boolean n = (c==d);
        boolean n1 = c.equals(d);
        boolean n2 = d.equals(e);
        boolean n3 = d.equalsIgnoreCase(e);
        System.out.println(n);
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_java_08

6、按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符串序列进行比较。
如果按字典顺序此String对象位于参数字符之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果两个字符串相等,则结果为0.
语法如下:
str.compareTo(String otherstr)
str、otherstr是两个要比较的字符串对象。
compareTo()方法只有在equals(Object)方法返回true时才返回0。

代码演示:

package com.company;

public class day6 {
    public static void main(String[] arg) {
        String a = "H";
        String b = "W";
        int c = a.compareTo(b);
        int d = b.compareTo(a);
        System.out.println(c);
        System.out.println(d);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_java 获取字符之间的字符串_09

7、字母大小写转换
字符串的toLowerCase()方法将字符串的所有字符从大写字母改写为小写字母,而toUpperCase()方法将字符串中的小写字母改写为大写字母。
两种方法中如果没有对应应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中对应字符做出转换。字符长度不变。
语法如下:

  1. str.toLowerCase()
  2. str.toUpperCase()
    str是要进行转换的字符串。

代码演示:

package com.company;

import java.util.Locale;

public class day6 {
    public static void main(String[] arg) {
        String a = "Hello";
        String b = "World";
        String c = a.toLowerCase();
        String d = b.toUpperCase();
        System.out.println(c);
        System.out.println(d);
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言_10

8、字符串分割
使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。
split()方法提供以下两种分割形式。

  1. split(String sign)
    该方法可根据给定的分割符对字符串进行拆分。
    语法如下:
    str.split(String sign)
    sign:分割字符串的分割符,也可以使用正则表达式。
    如果想定义多个分隔符,可以使用符号“|”。例如“,|=”表示分割符分别是“,”和“=”。
  2. split(String sign,int limit)
    该方法可根据给定的分割符对字符串进行拆分,并且限定拆分次数。
    语法如下:
    str.split(String sign,int limit)
    sign:分割字符串的分割符,也可以使用正则表达式。
    limit:模式匹配次数,如果值设置为n,那么将根据正则表达式匹配n-1次,得到的结果数组的长度不会大于n,数组的最后一项是最后匹配的分割符以后的全部内容。

代码演示:

package com.company;

import java.util.Locale;

public class day6 {
    public static void main(String[] arg) {
        String a = "2021.03.08";
        String[] firstArray = a.split("\\.");
        String[] secondArray = a.split("\\.",2);
        System.out.println("a的原值:["+a+"]");
        System.out.println();
        System.out.println("全部分割的结果:");
        for (String b : firstArray){
            System.out.println("["+b+"]");
        }
        System.out.println();
        System.out.println("分割两次的结果:");
        for (String b : secondArray){
            System.out.println("["+b+"]");
        }
    }
}

结果:

java 获取字符之间的字符串 java获取字符串的值_编程语言_11