首页 > 编程笔记 > Java笔记 阅读:3

Java String字符串类的用法(附带实例,新手必看)

Java 编程时使用频率最高的应该就是字符串了。所谓字符串就是若干字符的组合,字符串可以是字母、中文、数字、符号等的任意组合,比如“java”、“我们是程序员”、“10086”都是字符串。

Java 提供的字符串类为 String,通过该类能很方便地对字符串进行各种操作。该类对应的包类为 java.lang.String,我们编写代码时无须手动导入这个类,因为 Java 会默认导入该类。

如果在编程时要定义一个字符串,我们通常会采用最简单的方式——双引号,将字符串放在双引号(英文符号)内即可,比如“Hello World”。

通过双引号可以非常方便地创建字符串对象,例如:
public class StringTest {
    public static void main(String[] args) {
        String s1 = "Hello World";
        String s2;
        s2 = "我们是程序员";
        System.out.println(s1);
        System.out.println(s2);
        s2 = "10086";
        System.out.println(s2);
    }
}
输出结果为:

Hello World
我们是程序员
10086


除了使用双引号定义字符串,还可以使用 String 类的构造方法来定义字符串。例如:
public class StringTest {
    public static void main(String[] args) {
        String s1 = new String("Hello World");
        String s2;
        s2 = new String("我们是程序员");
        System.out.println(s1);
        System.out.println(s2);
        char[] chars = { '1', '0', '0', '8', '6' };
        String s3 = new String(chars);
        System.out.println(s3);
    }
}
输出结果为:

Hello World
我们是程序员
10086

String 类有多种不同的构造方法,根据要求传入不同的参数就可以定义字符串,比如 new String("Hello World") 则创建了值为 Hello World 的字符串对象。也可以传入 char 数组,比如传入 { '1', '0', '0', '8', '6' } 则创建了值为 10086 的字符串对象。

实际上双引号方式是 Java 为了方便开发而设定的,其通过编译后与 String 类的构造方法的效果是相同的,也就是说可以随意用其中一种。例如:
String s1 = "Hello World";
String s1 = new String("Hello World");
两行代码是等价的,但是为了方便,多数情况下我们会使用双引号的方式。

Java String类常用方法

Java 提供 String 类是为了方便我们对字符串进行处理,它将常用的字符串操作进行了封装,以方法的形式提供给我们使用,这些方法包括计算字符串长度、获取字符串指定位置的字符、将字符串进行大小写转换等。

下表列出的是 String 类的常用方法:

表:String类的常用方法
方法 作用
char charAt(int index) 获取字符串对象中指定位置的字符
int length() 获取字符串对象的长度
boolean equals(Object anObject) 比较两个字符串对象是否相等
boolean startsWith(String prefix) 判断字符串对象是否以某个字符串开始
boolean endsWith(String suffix) 判断字符串对象是否以某个字符串结尾
int indexOf(String str) 查找某个字符在字符串中第一次出现的位置
String substring(int beginIndex) 截取字符串对象中指定位置之后的子字符串
String replace(char oldChar, char newChar) 替换字符串中指定的字符
String[] split(String regex) 将字符串对象切分成多个子字符串
String toLowerCase() 将字符串对象进行小写转换
String toUpperCase() 将字符串对象进行大写转换

1) charAt()方法

charAt() 方法用于获取字符串对象中指定位置的字符,需要传入位置索引,索引从 0 开始。

假设字符串长度为 n,那么第一个字符索引为 0,而最后一个字符的索引为 n-1。例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.charAt(0);
$13 ==> 'H'

jshell> s1.charAt(10);
$14 ==> 'd'
对于字符串“Hello World”,charAt(0) 返回的字符为“H”,charAt(10) 返回的字符为“d”。

如果传入的索引超出了字符串索引范围会怎样呢?我们可以试试传入 11,结果报了“StringIndexOutOfBoundsException”的异常信息,说明这个索引超出了范围。
jshell> s1.charAt(11);
|   异常错误 java.lang.StringIndexOutOfBoundsException:String index out of range: 11
|        at StringLatin1.charAt (StringLatin1.java:47)
|        at String.charAt (String.java:693)
|        at (#15:1)

2) length()方法

length() 方法用于获取字符串对象的长度,例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> String s2 = new String("我们是程序员");
s2 ==> "我们是程序员"

jshell> s1.length();
$9 ==> 11

jshell> s2.length();
$10 ==> 6
我们在 JShell 中直接测试这个方法的效果,分别定义了“Hello World”和“我们是程序员”这两个字符串,然后通过 length() 方法获取它们的长度分别为 11 和 6。我们可以数一数看看长度是否正确,注意空格也算一个字符。

获取字符串的长度后可以执行很多其他操作,比如可以遍历字符串。例如:
public class StringTest {
    public static void main(String[] args) {
        String s1 = new String("Hello World");
        for (int i = 0; i < s1.length(); i++)
            System.out.print(s1.charAt(i)+",");
    }
}
输出结果为:

H,e,l,l,o, ,W,o,r,l,d,

程序中通过 for 循环和 length() 方法就能遍历字符串中的每个字符了。

3) equals()方法

equals() 方法用于比较两个字符串对象的值是否相等,如果两个字符串对象包含的所有字符都相同则返回 true,只要有任意一个字符不相同就返回 false。
public class StringTest {
    public static void main(String[] args) {
        String s1 = new String("Hello");
        String s2 = new String("Hello");
        String s3 = new String("hello");
        String s4 = new String("haha");
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s1.equals(s4));
    }
}
输出结果为:

true
false
false

程序中,s1 和 s2 相等,s1 和 s3 由于第一个字符大小写不同而不相等,s1 和 s4 则明显不相等。

4) startsWith()方法

startsWith() 方法用于判断字符串对象的值是否以某个字符串为前缀。例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.startsWith("H");
$32 ==> true

jshell> s1.startsWith("Hel");
$33 ==> true
程序中对于“Hello World”字符串,由于它以“H”和“Hel”开始,因此两个结果都为 true。

5) endsWith()方法

endsWith() 方法用于判断字符串对象的值是否以某个字符串结尾,该方法与 startsWith() 方法类似,具体的使用如下:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.endsWith("d");
$35 ==> true

jshell> s1.endsWith("rld");
$36 ==> true

6) indexOf()方法

indexOf() 方法用于查找某个字符串在待搜索字符串中第一次出现的位置。例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.indexOf("l");
$38 ==> 2

jshell> s1.indexOf("o");
$39 ==> 4

jshell> s1.indexOf("World");
$40 ==> 6
对于“Hello World”字符串,第一次出现“l”的位置为 2,第一次出现“o”的位置为 4。注意位置索引是从 0 开始计算的。第一次出现“World”的位置为 6,以首字符“W”的位置索引为准。

7) substring()方法

substring() 方法用于截取字符串对象中指定位置的子字符串。如果只传入一个值则表示起始索引。例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.substring(2);
$46 ==> "llo World"
“s1.substring(2)”表示从位置索引 2 开始截取之后的字符串,结果为“llo World”。

如果传入两个值则分别表示起始索引和结束索引,注意结束索引对应的字符不会被截取。
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.substring(2,5);
$49 ==> "llo"
“s1.substring(2,5)”表示从位置索引 2 开始到位置索引 5(不包括 5 对应的字符)之间的字符串,所以最终结果为“llo”。

8) replace()方法

replace() 方法用于替换字符串中指定的字符串,第一个参数表示原来的字符串,第二个参数表示新的字符串。
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.replace("o","a");
$54 ==> "Hella Warld"

jshell> s1.replace("World","Java");
$55 ==> "Hello Java"
程序中,对于“Hello World”字符串,“replace("o","a")”表示用 a 来替换 o,替换后结果为“Hella Warld”。“replace("World","Java")”表示用 Java 来替换 World,替换后结果为“Hello Java”。

9) split()方法

split() 方法用于将字符串对象切分成多个子字符串。例如:
jshell> String s1 = new String("你们,我们,他们");
s1 ==> "你们,我们,他们"

jshell> s1.split(",");
$65 ==> String[3] { "你们", "我们", "他们" }
程序中,对于“你们,我们,他们”字符串,“split(",")”表示通过逗号对字符串进行切分,最终得到“你们”“我们”和“他们”三个子字符串。

10) toLowerCase()方法

toLowerCase() 方法用于将字符串对象的值进行小写转换,例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.toLowerCase();
$67 ==> "hello world"
程序中,“Hello World”字符串经过 toLowerCase() 方法处理后变为“hello world”。

11) toUpperCase()方法

toUpperCase() 方法用于将字符串对象的值进行大写转换,效果与 toLowerCase() 方法相反。例如:
jshell> String s1 = new String("Hello World");
s1 ==> "Hello World"

jshell> s1.toUpperCase();
$69 ==> "HELLO WORLD"

12) 通过+连接

对于字符串对象,我们还经常使用“+”符号,它实际上就是对字符串进行连接操作。如果要连接多个字符串就可以使用“+”,非常方便。

例如:
jshell> String s1 = "Hello " + "Java " + "...";
s1 ==> "Hello Java ..."

相关文章