文档

Java™ 教程
隐藏目录
字符串
学习路径:学习Java语言
课程:数字和字符串

字符串

字符串在Java编程中被广泛使用,它们是字符的序列。在Java编程语言中,字符串是对象。

Java平台提供了String类来创建和操作字符串。

创建字符串

创建字符串的最直接方法是写:

String greeting = "Hello world!";

在这种情况下,"Hello world!"是一个字符串字面量,它是你代码中用双引号括起来的一系列字符。每当编译器在你的代码中遇到一个字符串字面量时,它会创建一个具有该值的String对象,即Hello world!

与任何其他对象一样,你可以使用new关键字和构造函数来创建String对象。String类有十三个构造函数,允许你使用不同的源(例如字符数组)提供字符串的初始值:

char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
System.out.println(helloString);

这段代码的最后一行显示hello


注意: String类是不可变的,一旦创建,String对象就不能被改变。String类有许多方法,其中一些将在下面讨论,它们看起来修改了字符串。由于字符串是不可变的,这些方法实际上是创建并返回一个包含操作结果的新字符串。

字符串长度

用于获取对象信息的方法称为访问器方法。你可以使用字符串的length()方法来获取字符串对象中包含的字符数。执行下面的两行代码后,len等于17:

String palindrome = "Dot saw I was Tod";
int len = palindrome.length();

回文是指一个单词或句子在正向和反向拼写时都相同,忽略大小写和标点符号。下面是一个短小且效率低下的程序,用于反转一个回文字符串。它调用了String方法charAt(i),该方法返回字符串中的第i个字符,从0开始计数。

public class StringDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        char[] tempCharArray = new char[len];
        char[] charArray = new char[len];
        
        // 将原始字符串放入字符数组中
        for (int i = 0; i < len; i++) {
            tempCharArray[i] = 
                palindrome.charAt(i);
        } 
        
        // 反转字符数组
        for (int j = 0; j < len; j++) {
            charArray[j] =
                tempCharArray[len - 1 - j];
        }
        
        String reversePalindrome =
            new String(charArray);
        System.out.println(reversePalindrome);
    }
}

运行程序会产生以下输出:

doT saw I was toD

为了完成字符串反转,程序必须将字符串转换为字符数组(第一个for循环),将数组反转为第二个数组(第二个for循环),然后再转换为字符串。String 类包含一个方法getChars(),用于将字符串或字符串的一部分转换为字符数组,因此我们可以将上述程序中的第一个for循环替换为

palindrome.getChars(0, len, tempCharArray, 0);

连接字符串

String类包括一个用于连接两个字符串的方法:

string1.concat(string2); 

这将返回一个新的字符串,该字符串是在string1的末尾添加了string2。

你还可以使用concat()方法与字符串字面量一起使用,例如:

"My name is ".concat("Rumplestiltskin");

字符串更常用的是使用+运算符连接,例如

"Hello," + " world" + "!"

结果为

"Hello, world!"

+运算符在print语句中被广泛使用。例如:

String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");

将打印

Dot saw I was Tod

这样的连接可以是任何对象的混合。对于每个不是String的对象,将调用它的toString()方法将其转换为String


注意: Java编程语言不允许字面字符串跨越多行,因此您必须在多行字符串的每一行末尾使用+连接运算符。例如:
String quote = 
    "Now is the time for all good " +
    "men to come to the aid of their country.";

使用+连接运算符将字符串在多行之间断开,对于print语句来说非常常见。


创建格式化字符串

你已经看到了使用printf()format()方法打印带有格式化数字的输出。String类有一个等效的类方法format(),它返回一个String对象而不是一个PrintStream对象。

使用String的静态format()方法可以创建一个格式化的字符串,可以重复使用,而不仅仅是一次性的打印语句。例如,不是使用

System.out.printf("浮点变量的值是 %f," +
                  "整数变量的值是 %d," +
                  "字符串的值是 %s", 
                  floatVar, intVar, stringVar); 

你可以这样写

String fs;
fs = String.format("浮点变量的值是 %f," +
                   "整数变量的值是 %d," +
                   "字符串的值是 %s",
                   floatVar, intVar, stringVar);
System.out.println(fs);

上一页:字符
下一页:在数字和字符串之间转换