Java/字符串

维基教科书,自由的教学读本

简介[编辑]

Java中的字符串和C语言相同,都是用由一对引号""括起来的任意长度的字符组成,比如:

String str = "Hello, world!";

其中String是Java的字符串类,包含在默认的java.lang包类。在Java语言中,所有的字符串都是由String类来表示的。与C语言比较起来,Java的字符串有以下几个不同:

  1. String类所表达的字符串是无法改变的,也就是说只能对其字符进行读操作,否则Java将生成新字符串。这在很大程度上帮助了Java,将程序中所有相同的字符串用一个对象来表达。
  2. String中的字符都是char类型,即每个字符占用2个字节。
  3. 与C语言利用\0x00来表示字符串的结尾,String类中包含了该字符串的长度(可由str.length()获得)。

在每个Java的类中,有一个String toString()的函数。利用该函数,类可以提供一个向外的字符串来表达自己的相关信息。

字符串打印[编辑]

在java.lang包里,System类的静态成员变量outerr分别提供了打印标准输出和标准错误的函数,两者都是java.io.PrintStream类,主要使用的标准输出方式有:

System.out.print("Hello, world!");
System.out.println("I'm Kitty.");
System.out.printf("I'm %d years old.\n", 12);
System.out.format("Do you like me?\n");

转义字符[编辑]

在源代码中,Java字符串使用了和C语言一样的转义字符,用斜杠表示:

  • \t: 制表符
  • \n: 换行
  • \0xFFFF: 用16进位表示的字符
  • \0255: 用8进位表示的字符

字符串操作[编辑]

String类中提供了很多字符串操作的函数,但请记住,原字符串并没有改变,而是生成了新字符串。主要的操作如下:

  1. String concat(String str)
  2. String replace(char oldChar, char newChar)
  3. String substring(int beginIndex)
  4. String toLowerCase()
  5. String toUpperCase()
  6. String trim()

详细的关于String类的信息,请参阅Java API:java.lang.String

字符串生成[编辑]

java.lang包中提供了两个类来支持对字符串的生成,分别是StringBufferStringBuilder,两者的区别在于前者是线程安全的。下面提供一个StringBuilder的例子来说明是如何生成新字符串的:

String name = "Kitty";
int age = 12;

StringBuilder builder = new StringBuilder(); // 新建StringBuilder类
builder.append("My name is ").append(name).append('.').append('\n'); // 利用append函数向StringBuilder对象添加新的字符串
builder.append("I'm ").append(age).append('.').append('\n'); // 支持对基础数据类型的输入

String new_str = builder.toString(); // 最后利用toString导出新字符串

System.out.println(new_str);

控制台将输出:
>>> My name is Kitty.
>>> I'm 12.