String类主要用于对字符串内容的检索、比较等操作,操作的结果通常得到一个新字符串,但不会改变源串的内容 。
1. 创建字符串
public String()
public String(String s)
public String(StringBuffer buf)
public String(char value[ ])
举例:
String s = new String(“ABC”);
String s = “ABC”;
char[ ] helloArray = { ‘h’, ‘e’, ‘l’, ‘l’, ‘o’ };
String helloString = new String(helloArray);
char[] ch=s.toCharArray(); //字符串转换为字符数组
求字符串长度 length()
String s = “Hello!” ;
System.out.println(s.length());
2.字符串的连接
利用“+”运算符可以实现字符串的拼接;可以将字符串与任何一个对象或基本数据类型的数据进行拼接。
例如:
String s= “Hello!”;
s=s+ “ Mary “+4; //s的结果为Hello! Mary 4
Java还提供了另一个方法concat(String str)专用于字符串的连接。
String s=”4+3=”;
String s1=s.concat(“7”); //方法结果为4+3=7,但s的值不变
public class Test{public static void main(String argv[]){String x="hello";myMethod(x);System.out.println("x="+x);}static void myMethod(String k){k=k+",你好";//注意k引用变化System.out.println("k="+k);}}/*运行结果:k=hello,你好x=hello*/
3. 比较两个字符串
int compareTo(String anotherString)boolean equals(Object anObject)boolean equalsIgnoreCase(String anotherString)
int compareTo(String anotherString):
当前串大,则返回值>0;
当前串小,则返回值<0;
两串相等,则返回值=0。
public class TestString {public static void main(String a[]) {String x="hello1";String y="hello2";int result = x.compareTo(y);System.out.println(result);//-1}}
boolean equals(Object anObject)**//重写equals方法,是值比较。**String s1="Hello!World";String s2="Hello!World";boolean b1=s1.equals(s2); trueboolean b2=(s1==s2); true
String s1="Hello!World";String s2=new String("Hello!World");boolean b1=s1.equals(s2); trueboolean b2=(s1==s2); false

特别地,intern()方法返回字符串的等同串。如下赋值等价: s2=s1.intern(); s2=s1;
public class Test{public static void main(String args[ ]) {String s1="abc";String s2="Abc";//赋值System.out.println(s1=s2); //AbcSystem.out.println(s1==s2); //true}}//例7-1 设有中英文单词对照表,输入中文单词,显示相应英文单词,输入英文单词显示相应中文单词。public class Word{public static void main(String args[]) {String [ ][ ] x={ {"good","好"},{"bad","坏"},{"work","工作"}};int k;String in=args[0];if ( (k=find_e(x,in))!=-1)System.out.println(x[k][1]);else if ((k=find_c(x,in))!=-1 )System.out.println(x[k][0]);elseSystem.out.println("无此单词");}/* 根据英文找中文,找到则返回所在行位置,未找到则返回-1 */static int find_e(String [ ][ ] x, String y) {for ( int k=0;k<x.length;k++)if (x[k][0].equals(y))return k;return -1;}/* 根据中文找英文,找到则返回所在行位置,未找到则返回-1 */static int find_c(String [][] x, String y) {for ( int k=0;k<x.length;k++)if (x[k][1].equals(y))return k;return -1;}}
4.字符串的提取与替换
char **charAt**(int index):返回指定位置的字符。(第1个位置为0)String **substring**(int beginIndex, int endIndex):返回从beginIndex位置开始到endIndex-1结束的子字符串。String **substring**(int beginIndex):返回从beginIndex位置开始到串末尾的子字符串。String **replace**(char oldchar,char newchar):将字符串中所有oldchar字符换为newchar。String **replaceAll**(String regex,String replacement):将字符串中所有与正则式regex匹配的子串用新的串replacement替换。String **trim**():将当前字符串去除前导空格和尾部空格后的结果作为返回的串。String **toUpperCase**(): 所有字符转大写。String **toLowerCase**(): 所有字符转小写。
5.字符串中字符或子串的查找
| 方法 | 功能(返回参数在串中的位置) |
|---|---|
| indexOf(int ch) | ch的首次出现位置,找不到则返回-1 |
| indexOf(int ch, int start) | ch的首次出现位置≥start |
| indexOf(String str) | str的首次出现位置 |
| indexOf(String str, int start) | str的首次出现位置≥start |
| lastIndexOf(int ch) | ch的最后出现位置 |
| lastIndexOf(int ch, int start) | ch的最后出现位置≤start |
| lastIndexOf(String str) | str的最后出现位置 |
| lastIndexOf(String str, int start) | str的最后出现位置≤start |
另外,还有两个方法可用来判断参数串是否为字符串的特殊子串。
(1)boolean startsWith(String prefix):判断参数串是否为当前串的前缀。
String s=”hello,world”;
boolean x=s.startsWith(“he”);
(2)boolean endsWith(String postfix):判断参数串是否为当前串的后缀。
public class Test3 {public static void main(String a[]) {String s="ABCDEFGHIJK";System.out.println(s.charAt(3));System.out.println(s.substring(1,4)); 1到4-1System.out.println(s.indexOf("EF"));}}/*运行结果:DBCD4*///例7-3 从一个代表带有路径的文件名中分离出文件名。public class GetFilename {/* 以下方法获取文件名,文件名是最后一个分隔符\后面的子串 */public static String pickFile(String fullpath) {int pos = fullpath.lastIndexOf('\\');if (pos==-1)return fullpath;return fullpath.substring(pos+1);}public static void main(String ags[]) {String filename =pickFile("d:\\java\\example\\test.java");System.out.println("filename="+ filename);}}注:\\是一个字符,pos=15
split用来根据指定分隔符分离字符串
格式:public String[] split(String regex)
例如:对于字符串str=”boo:and:foo:bye”
str.split(“ : “)的结果为:
{ “boo”, “and”, “foo” , “bye” }
str.split(“ o “)的结果为:
{ “b”, “”, “:and:f” , “”, “:bye” }
注意,参数串代表一个正则表达式的匹配模式,分隔符如果是+、*等符号时,要进行转义处理,例如分隔符为“+”,要写成”\+”的正则式。
String x= “1+2+4+5+8”;
x.split(“ \+ “)的结果为{“ 1 “, “ 2 “, “ 4 “, “ 5 “, “ 8” }
