字符串

了解了Java中的数组之后,现在正是时候来学习字符串极其常见用法,比如如何创建一个字符串类型的数组,以及如何将字符串数组拼接成字符串等等。

在编写代码时,我们可以像声明基本类型的变量那样来声明字符串变量,比如像这样

String hello = "Hello";

当然也可以在声明字符串变量时直接将已经存在的字符串变量赋给它。

String backup = hello;

虽然声明字符串变量时我们编写代码的做法,与声明int型、float型等基本类型变量一样,但是字符串类型的变量与八大基本类型变量不同。在Java里面字符串也是复合类型。

假设现在我们想要在屏幕上打印出字符串hello的长度,可以这样编写代码

System.out.println(hello.length());

与数组一样,我们需要通过使用其内部属性来知道它们的长度。不同的是,对于数组我们需要使用代码“.length”,而对于字符串则需要使用“.length()”。虽然都是复合类型的某个内部属性,但是在细分领域它们是不同的属性,后面学习到面向对象时我们会深入学习并区分它们。

如果大家运行上面这行代码,屏幕上将会打印5。在Java中,字符串的长度表示某个字符串里面包含多少个字符。

类似于数组,我们可以很容易访问字符串里面的各个字符,但是不能通过索引(如[0]、[1])的方式直接访问,而是需要使用charAt()内部属性,比如像这样,

for (int i = 0; i < hello.length(); i++) {
    System.out.println(hello.charAt(i));
}

如果运行这段代码,大家的屏幕上将会显式

H
e
l
l
o

尽管可以使用charAt()方法来访问字符串里面的字符,但是不能以这种方式来更改字符串。

hello.charAt(0) = 'h';

如果大家像上面这样编写代码,运行程序时会报错,这在Java中是不合法的。

假设我们想将字符串”Hello”的第一个字符更改成小写字母“h”,至少有两种方法可以办到。第一种就是将字符串转变成小写形式,比如像这样,

String lowerCase = hello.toLowerCase();
System.out.println(hello);
System.out.println(lowerCase);

在第一行代码中,我们使用toLowerCase()方法将字符串转变成小写形式,并将结果赋给变量lowerCase。为了说明字符串自身内容并没有被更改,接着在后面两行代码中将它们各自打印出来。下面是运行结果,

Hello
hello

因为我们可以更改数组的元素,第二种方法自然是先将字符串转变成字符数组,接着将数组的第一个元素更改为”h”,最后再将字符数组拼接成一个新字符串。

char[] chars = hello.toCharArray();
System.out.println(Arrays.toString(chars));
chars[0] = 'h';
System.out.println(Arrays.toString(chars));
String hello2 = String.valueOf(chars);
System.out.println(hello2);

在第一行代码中,我们使用toCharArray()方法将字符串转变成字符数组,并将结果赋给字符类型的数组变量chars。这个过程并没有更改原始字符串的内容。

在第二行到第六行代码,除了第五行,其余的大家应该都比较容易理解了。在第五行代码中,我们使用“String.valueOf()”来将字符数组拼接成新的字符串,并将结果赋给字符串变量hello2。

如果大家想运行上面这段代码,记得在源文件的第一行添加这行语句,

import java.util.Arrays;

因为我们的代码里面用到了Arrays类的toString()方法。

但是我们却不需要类似地添加这样一行语句

import java.util.String;

一方面主要是Java的工具包java.util里面并没有String这个类,因此上面这行代码是不合法的。另外,String这个类或者说类型比较特殊,Java默认就已经包含这个类。

下面是这段代码的运行结果

[H, e, l, l, o]
[h, e, l, l, o]
hello

除了可以将字符串转变成小写形式,也可以很容易地转变成大写形式,我们可以使用toUpperCase()方法来办到。

String upperCase = hello.toUpperCase();

尽管在Java中我们不能直接更改一个字符串变量的内容,但是可以将两个或者多个字符串拼接成一个更长的字符串,这需要用到字符串的加法操作符。

String world = "World";
String greeting = hello + ", " + world;
System.out.println(greeting);

如果大家运行上面这段代码,屏幕上会打印

Hello, World

在第二行代码中,等号右边先将字符串变量hello的内容与字符串”, “拼接起来,然后在这个结果的基础上继续与字符串变量world的内容进行拼接,最后得到“Hello, World”。

有关字符串的用法很多,上面示例了部分常见用法,后面有需要的时候我们会接触到其他常见用法。下面贴上本节教程的完整代码。

import java.util.Arrays;

public class StringDemo {
    public static void main(String[] args) {
        String hello = "Hello";
        String backup = hello;

        System.out.println(hello.length());

        for (int i = 0; i < hello.length(); i++) {
            System.out.println(hello.charAt(i));
        }

        // Java不支持这样来更改字符串的内容
        // hello.charAt(0) = 'h';

        String lowerCase = hello.toLowerCase();
        System.out.println(hello);
        System.out.println(lowerCase);

        char[] chars = hello.toCharArray();
        System.out.println(Arrays.toString(chars));
        chars[0] = 'h';
        System.out.println(Arrays.toString(chars));
        String hello2 = String.valueOf(chars);
        System.out.println(hello2);

        String upperCase = hello.toUpperCase();
        System.out.println(hello);
        System.out.println(upperCase);

        String world = "World";
        String greeting = hello + ", " + world;
        System.out.println(greeting);
    }
}

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注