Java/字符串
外观
< Java
简介
[编辑]Java中的字符串和C语言相同,都是用由一对引号""括起来的任意长度的字符组成,比如:
String str = "Hello, world!";
其中String是Java的字符串类,包含在默认的java.lang包类。在Java语言中,所有的字符串都是由String类来表示的。与C语言比较起来,Java的字符串有以下几个不同:
- String类所表达的字符串是无法改变的,也就是说只能对其字符进行读操作,否则Java将生成新字符串。这在很大程度上帮助了Java,将程序中所有相同的字符串用一个对象来表达。
- String中的字符都是char类型,即每个字符占用2个字节。
- 与C语言利用\0x00来表示字符串的结尾,String类中包含了该字符串的长度(可由str.length()获得)。
在每个Java的类中,有一个String toString()的函数。利用该函数,类可以提供一个向外的字符串来表达自己的相关信息。
字符串打印
[编辑]在java.lang包里,System类的静态成员变量out和err分别提供了打印标准输出和标准错误的函数,两者都是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类中提供了很多字符串操作的函数,但请记住,原字符串并没有改变,而是生成了新字符串。主要的操作如下:
- String concat(String str)
- String replace(char oldChar, char newChar)
- String substring(int beginIndex)
- String toLowerCase()
- String toUpperCase()
- String trim()
详细的关于String类的信息,请参阅Java API:java.lang.String
字符串生成
[编辑]java.lang包中提供了两个类来支持对字符串的生成,分别是StringBuffer和StringBuilder,两者的区别在于前者是线程安全的。下面提供一个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.