字符串在Java编程中广泛使用,字符串就是一系列字符(由一个个的字符组成)。 在Java编程语言中,字符串被视为对象。
Java平台提供String类来创建和操作字符串。
1. 创建字符串
创建字符串的最直接方法是 - 
String str = "Hello world!";
每当它在代码中遇到字符串文字时,编译器就会创建一个String对象,在本例中str对象的值为Hello world!。
与其他对象一样,可以使用new关键字和构造函数来创建String对象。String类有11个构造函数,方便使用不同的源(例如:字符数组)提供字符串的初始值。
示例
public class StringDemo {
   public static void main(String args[]) {
      char[] helloArray = { 'Y', 'i', 'i', 'b', 'a', 'i' };
      String helloString = new String(helloArray);  
      System.out.println( helloString );
   }
}
执行上面示例代码,得到下结果:
Yiibai
注 -  String类是不可变的,因此一旦创建,就无法更改String对象。 如果想要对字符串进行大量修改,则应使用StringBuffer和StringBuilder。
2. 字符串长度
用于获取对象信息的方法称为访问器方法。 可以与字符串一起使用来获取字符串长度的一个访问器方法是length()方法,它返回字符串对象中包含的字符数。
以下程序是String类的length()方法的示例。
public class StringDemo {
   public static void main(String args[]) {
      String greeting = "Hi,Welcome to Yiibai.com";
      int len = greeting.length();
      System.out.println( greeting+" 字符串的长度是: " + len );
   }
}
执行上面示例代码,得到下结果:
Hi,Welcome to Yiibai.com 字符串的长度是: 24
3. 连接字符串
String类包含一个用于连接两个字符串的方法 - 
string1.concat(string2);
这将返回一个新字符串:string1,并且string1在结尾处添加了string2。 还可以将concat()方法与字符串文字一起使用,例如 - 
"My name is ".concat("Maxsu");
字符串通常使用+运算符连接,如 - 
"Hello," + " world" + "!"
上面代码执行后得到的结果是:
"Hello, world!"
下面再来看另一个例子 - 
public class StringDemo {
   public static void main(String args[]) {
      String string1 = "Bai";
      System.out.println("Yii" + string1 + ".com");
   }
}
上面代码执行后得到的结果是:
YiiBai.com
3. 创建格式化字符串
Java中使用printf()和format()方法来打印带有格式化数字的输出。 String类有一个等效的类方法format(),它返回一个String对象而不是一个PrintStream对象。
使用String的static format()方法可以创建重用的格式化字符串,而不是一次性打印语句。 例如 - 
System.out.printf("The value of the float variable is " +
                  "%f, while the value of the integer " +
                  "variable is %d, and the string " +
                  "is %s", floatVar, intVar, stringVar);
上面打印语句可使用格式化写为:
String fs;
fs = String.format("The value of the float variable is " +
                   "%f, while the value of the integer " +
                   "variable is %d, and the string " +
                   "is %s", floatVar, intVar, stringVar);
System.out.println(fs);
4. String类方法
以下是String类定义的方法列表 - 
| 编号 | 
方法 | 
描述 | 
| 1 | 
char charAt(int index) | 
返回指定索引处的字符。 | 
| 2 | 
int compareTo(Object o) | 
将此String对象与另一个对象进行比较。 | 
| 3 | 
int compareTo(String anotherString) | 
按字典顺序比较两个字符串。 | 
| 4 | 
int compareToIgnoreCase(String str) | 
按字典顺序比较两个字符串,但不区分大小写。 | 
| 5 | 
String concat(String str) | 
将指定的字符串连接到此字符串的末尾。 | 
| 6 | 
boolean contentEquals(StringBuffer sb) | 
当且仅当此String表示的字符串与指定的StringBuffer相同的字符序列时,才返回true。 | 
| 7 | 
static String copyValueOf(char[] data) | 
返回表示指定数组中字符序列的String对象形式。 | 
| 8 | 
static String copyValueOf(char[] data, int offset, int count) | 
返回表示指定数组中字符序列的String对象形式。 | 
| 9 | 
boolean endsWith(String suffix) | 
判断此字符串是否以指定的字符作为后缀结尾。 | 
| 10 | 
boolean equals(Object anObject) | 
将此字符串与指定的对象进行比较。 | 
| 11 | 
boolean equalsIgnoreCase(String anotherString) | 
将此String与另一个String进行比较,忽略大小写。 | 
| 12 | 
byte getBytes() | 
使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。 | 
| 13 | 
byte[] getBytes(String charsetName) | 
使用指定的字符集将此String编码为字节序列,将结果存储到新的字节数组中。 | 
| 14 | 
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 
将此字符串中的字符复制到目标字符数组中。 | 
| 15 | 
int hashCode() | 
返回此字符串的哈希码。 | 
| 16 | 
int indexOf(int ch) | 
返回指定字符在此字符串中第一次出现的索引。 | 
| 17 | 
int indexOf(int ch, int fromIndex) | 
返回指定字符在此字符串中第一次出现的索引,它从指定索引处开始搜索。 | 
| 18 | 
int indexOf(String str) | 
返回指定子字符串在此字符串中第一次出现的索引。 | 
| 19 | 
int indexOf(String str, int fromIndex) | 
从指定的索引处开始,返回指定子字符串在此字符串中第一次出现的索引。 | 
| 20 | 
String intern() | 
返回字符串对象的规范表示。 | 
| 21 | 
int lastIndexOf(int ch) | 
返回指定字符在此字符串中最后一次出现的索引。 | 
| 22 | 
int lastIndexOf(int ch, int fromIndex) | 
返回指定字符在此字符串中最后一次出现的索引,它从指定的索引开始向后搜索。 | 
| 23 | 
int lastIndexOf(String str) | 
返回指定子字符串在些字符串中最后出现的索引。 | 
| 24 | 
int lastIndexOf(String str, int fromIndex) | 
返回指定子字符串在此字符串中最后一次出现的索引,它从指定索引开始向后搜索。 | 
| 25 | 
int length() | 
返回此字符串的长度。 | 
| 26 | 
boolean matches(String regex) | 
判断此字符串是否与给定的正则表达式匹配。 | 
| 27 | 
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) | 
判断两个字符串区域是否相等。 | 
| 28 | 
boolean regionMatches(int toffset, String other, int ooffset, int len) | 
判断两个字符串区域是否相等。 | 
| 29 | 
String replace(char oldChar, char newChar) | 
返回一个新字符串,该字符串是使用newChar替换此字符串中出现的所有oldChar后的字符串。 | 
| 30 | 
String replaceAll(String regex, String replacement) | 
将替换此字符串中匹配给定正则表达式的每个子字符串。 | 
| 31 | 
String replaceFirst(String regex, String replacement) | 
将替换此字符串中第一个匹配给定正则表达式的子字符串。 | 
| 32 | 
String[] split(String regex) | 
将此字符串拆分为给定正则表达式的匹配项。 | 
| 33 | 
String[] split(String regex, int limit) | 
将此字符串拆分为给定正则表达式的匹配项。 | 
| 34 | 
boolean startsWith(String prefix) | 
判断此字符串是否以指定的字符串前缀开头。 | 
| 35 | 
boolean startsWith(String prefix, int toffset) | 
判断此字符串在指定的索引是否以指定的前缀开始。 | 
| 36 | 
CharSequence subSequence(int beginIndex, int endIndex) | 
返回一个新的字符序列,它是该序列的子序列。 | 
| 37 | 
String substring(int beginIndex) | 
返回一个新字符串,该字符串是此字符串的子字符串。 | 
| 38 | 
String substring(int beginIndex, int endIndex) | 
返回一个新字符串,该字符串是此字符串的子字符串。 | 
| 39 | 
char[] toCharArray() | 
将此字符串转换为新的字符数组。 | 
| 40 | 
String toLowerCase() | 
使用默认语言环境的规则将此String中的所有字符转换为小写。 | 
| 41 | 
String toLowerCase(Locale locale) | 
使用给定Locale的规则将此String中的所有字符转换为小写。 | 
| 42 | 
String toString() | 
将这个对象(已经是一个字符串)本身返回。 | 
| 43 | 
String toUpperCase() | 
使用默认语言环境的规则将此String中的所有字符转换为大写。 | 
| 44 | 
String toUpperCase(Locale locale) | 
使用给定Locale的规则将此String中的所有字符转换为大写。 | 
| 45 | 
String trim() | 
返回字符串的副本,移除前导和尾随空格。 | 
| 46 | 
static String valueOf(primitive data type x) | 
返回传递的数据类型参数的字符串表示形式。 |