---------------------- android培训、java培训、期待与您交流! ----------------------
Java语言提供了专门处理字符串的类,可以利用这些类,轻松的对字符串进行操作。在Java语言中,所能使用的字符串类可以分为两大类:
一类是创建后就不会再改变内容的字符串类String类,一般将其称为不可变字符串类,主要用于存放字符串常量,对于需要进行比较、搜索之类的字符串,就存放于String类中。
另一类是在字符串创建后,允许对字符串内容进行更改的字符串类StringBuffer类,一般称为可变字符串类,主要用于存放字符串变量,对于需要进行插入、修改等操作的字符串,都会存放在StringBuffer类中。
需要注意的是,字符串不同于字符,Java语言中规定,凡是用双引号(””)引起的内容都视为字符串,而用单引号(’’)引起的内容都视为字符。
15.1 字符串对象String类
String类是不可变字符串类,因此用于存放字符串常量。一个String字符串一旦创建之后,其长度和内容就不能再被更改了。每一个String字符串对象创建的时候,就需要指定字符串的内容。
15.1.1 String类常用方法
字符串String类的构造方法及描述见表15-1所示。
表15-1 String类的构造方法及描述
构 造 方 法 | 描 述 |
String() | 用来创建一个空的字符串常量 |
String(String str) | 利用一个已经存在的字符串常量,来创建一个新的String对象 |
String(StringBuffer buf) | 利用一个已经存在的StringBuffer对象,来创建新的String对象 |
String(char c[]) | 利用已经存在的字符数组的内容,来创建新的String对象 |
字符串String类的常用方法及功能见表15-2所示。
表15-2 String类的常用方法及功能
int Length() | 用于获得当前字符串对象中字符的个数 |
boolean startsWith(String str) | 用于判断当前字符串的前缀,是否是指定的字符串对象str,若是则返回true,否则返回false |
boolean endsWith(String str) | 用于判断当前字符串的后缀,是否是指定的字符串对象str,若是则返回true,否则返回false |
int indexOf(int a) | 用于查找并返回当前字符串中,某个特定字符a第一次出现的位置 |
int indexOf(int a,int b) | 用于从当前字符串中,自b位个字符之后向后查找并返回某个特定字符a第一次出现的位置 |
boolean equals(Object o) | 用于将当前字符串与方法参数列表中给出的字符串对象o作比较,若相同则返回true,否则返回false,区分大小写 |
boolean equalsIgnoreCase(String str) | 用于将当前字符串与方法参数列表中给出的字符串对象str作比较,若相同则返回true,否则返回false,不区分大小写 |
int compareTo(String str) | 用于将当前字符串与参数中字符串对象str作比较,若完全相同则返回0;若按字母顺序大于参数字符串,则返回一个大于0的整数;反之,则返回一个小于0的整数 |
String concat(String str) | 用于将字符串str连接在当前字符串的尾部,并返回新的字符串 |
String replace(char c1,char c2) | 用于将当前字符串中的所有c1指定的字符替换为c2指定的字符,并返回新的字符串 |
在这里需要再次说明,String类的对象一经创建,就不会再发生改变。但String类中的很多方法,好像是改变了字符串的内容,其实并不是这样,先来看一个代码片断。
……
String s = "Hello!";
System.out.println(s.concat("world"));
System.out.println(s);
......
运行这段代码后,会发现结果是。
Hello!world
Hello!
也就是说,String类是不可变字符串类,调用方法前后,String类对象s的内容并没有发生变化,发生变化的只是s.concat()的值。换句话说,字符串对象s调用了concat()方法后,返回一个新的字符串,而字符串对象s本身是没有变的。
代码15-1中,举例说明String对象的声明、创建方法,以及String类中部分方法的使用。
代码15-1 String类对象的创建及使用StringDemo.java
public class StringDemo
{
String str1 = "Hello world!This is Java code.";
//声明并初始化字符串str1
String str2; //声明字符串str2
String str3 = new String("This is Java code.");
//声明并初始化字符串str3
public StringDemo()
{
str2 = new String("This is Java code.");
//创建字符串对象str2并初始化
System.out.println("str1 is: "+str1);
System.out.println("str2 is: "+str2);
System.out.println("str3 is: "+str3+"\n");
System.out.println("Each item of str1 is:");
for(int i=0;i<str1.length();i++)
{ //使用charAt()方法得到String字符串中指定位置的字符,并利用循环分别输出
char c = str1.charAt(i);
System.out.print("\""+c+"\",");
if((i+1)%10==0) System.out.println();
}
System.out.println();
byte b[] = str1.getBytes();
//使用String类的getBytes()方法,得到str1中所有字符对应的Unicode编码,并存入byte
型数组b中
System.out.println("Change each item of str1 to unicode is:");
for(int i=0;i<b.length;i++)
{ //利用循环分别输出str1中,所有元素对应的字符的Unicode编码
System.out.print(b[i]+",");
if((i+1)%10==0) System.out.println();
}
System.out.println();
System.out.print("The result of comparing str2 and str3 is:");
System.out.println(str2.equals(str3));
//将字符串对象str2与str3进行比较,并将返回值输出
System.out.println("\nReplace all charcters \"a\" to \"e\" in str2");
System.out.println("The result of str2.replace() is:"+str2.replace('a','e'));
//将字符串str2调用replace()方法的结果输出
System.out.println("str2 is: "+str2+"\n");
System.out.print("The result of whether str1 is beginning with \"Hello\":");
System.out.println(str1.startsWith("Hello"));
System.out.print("The result of whether str3 is end with \"code.\":");
System.out.println(str3.startsWith("code."));
}
public static void main(String[] args)
{
StringDemo stringDemo = new StringDemo();
}
}
代码15-2中,举例说明String对象中的compareTo()方法、indexOf方法的使用,同时比较使用equals()及equalsIgnoreCase()方法。
代码15-2 String类部分方法测试StringMethodDemo.java
public class StringMethodDemo
{
public static void main(String[] args)
{
String str1 = "abc";
String str2 = "aab";
String str3 = "abd";
String str4 = "abc";
String str5 = "ABC";
String str6 = "abcdefgabcde";
//以上完成字符串的声明及初始化
int i = str1.compareTo(str2);
int j = str1.compareTo(str3);
int k = str1.compareTo(str4);
//以上调用String的compareTo()方法来比较字符串
System.out.println("str1 is:"+str1);
System.out.println("str2 is:"+str2);
System.out.println("str3 is:"+str3);
System.out.println("str4 is:"+str4);
System.out.println("str5 is:"+str5);
System.out.println("str6 is:"+str6);
System.out.print("The result of str1 compareTo str2 is:");
System.out.println(i);
System.out.print("The result of str1 compareTo str3 is:");
System.out.println(j);
System.out.print("The result of str1 compareTo str4 is:");
System.out.println(k);
System.out.print("The result of str1 equals str5 is:");
System.out.println(str1.equals(str5));
//调用String的equals()方法来比较字符串
System.out.print("The result of str1 equalsIgnoreCase str5 is:");
System.out.println(str1.equalsIgnoreCase(str5));
//调用String的equalsIgnoreCase()方法来比较字符串
int m = str6.indexOf((int)'d');
//调用String的indexOf()方法,返回字符'd'第一次出现的位置
System.out.println("The char \"d\" first appear position is :"+m);
int n = str6.indexOf((int)'d',4);
//调用String的indexOf()方法,返回字符'd'从第四位后,首次出现的位置
System.out.println("After 4th position The char\"d\"appear position is:"+n);
}
}
---------------------- android培训、java培训、期待与您交流!
----------------------详细请查看:http://edu.csdn.net/heima