可以证明,字符串操作是计算机程序设计中最常见的行为。
字符串
字符型包括字符常量和字符变量两大类,字符常量是用单引号括起来的,如‘a’。
Java中的转义字符是‘\’.
字符变量:char ch=’s’;//默认初始值为\u0000;
Java中,把字符串作为对象来处理,Java语言提供的java.lang中封装了类String和StringBuffer,都可以用来表示一个字符串(分别处理不变字符串和可变字符串)。
字符串常量
一个字符串常量是双引号之间的字符序列,如果双引号之间没有任何字符,那么该字符创为空串,Java允许在字符串中出现转义字符。
Java允许直接使用加号连接两个字符串。
字符串的声明及初始化
对于字符串变量,在使用之前要显示声明,并且进行初始化。
> String a;
> StringBuffer b;
> //创建一个空字符串
> String c=new String();
> //直接用字符串常量来初始化一个字符串
> String d="hello";
>
字符串处理的类
String类是字符串常量类,该类对象在建立后不能修改。Java编译器保证每个字符串常量都是String类对象。
String类的基本方法
1.构造函数
String(); //生成一个空串;
String(String value); //用已知串生成一个串对象
String(char []value); //用字符数组生成一个串对象
String(char value[],int offset,int count); //用字符数组value的offset位置开始的count个字符,建立一个字符串对象,之后并不影响原来的字符数组
String(char value[],int hibyte,int offset,int count);//基本功能同上
2.字符串类的访问方法
字符串的访问即字符串的引用,它包括得到字符串的长度,得到指定位置的字符或字串,以及得到某个字符或者字串在字符串中的位置等。
length(); //返回字符串长度
toLowerCase(); //转换为小写串
toUpperCase(); //转换为大写串
charAt(int index); //返回字符串的第index个字符
substring(int neginindex); //返回从beginindex位置(包括该位置)开始到结尾的所有字符
substring(int beginindex,int endindex); //返回从beginindex位置(包括)开始到endindex(不包括)的所有字符
compareTo(String anotherString); //字符串比较,返回值为两者差
regionMatches(int toffset,String other,int ooffset,int len); //比较本串从toffset开始的len个字符和other串从ooffset开始的len个字符是否一致。
startWith(String prefix); //比较字符串是否以prefix开始
endWith(String suffix); //比较字符串以suffix结束
indexOf(int ch); //返回某个字符或字符串在本字符串中第一次出现的位置
lastIndexOf(); //返回某个字符或字符串在本字符串中最后一次出现的位置
replace(char oldChar,char newChar); //将字符串中oldChar字符替换成newChar字符;
valueOf(object obj); //将某个对象的实例转换成字符串
concat(String str); //将字符串str连接到本串的最后
3.字符串和字符数组
将字符串保存到字符数组中:
getChars(int start,int end,char c[],int offset);
//将当前字符串中的一部分字符复制到参数c指定的数组中,将字符中从位置start到end-1位置的字符复制到数组c中,并从数组c的offset处开始存放。
toCharArry();
调用该方法可以初始化一个字符数组,该数组的长度与字符串的长度相等,并将字符串对象的全部字符复制到该数组中。
如:String s=“哈哈哈”;
char a[]=s.toCharArray();
StringBuffer类
StringBuffer类是字符串缓冲区,不仅可以接受修改,还可以读入整个文件。
StringBuffer类的基本方法
1.StingBuffer类对象初始化
StringBuffer类的对象只能用初始化函数进行初始化,构造函数如下:
StringBuffer() //建立空的字符串对象
StringBuffer(int length) //建立长度为length的字符串对象
StringBuffer(String) //建立一个初始值为String的字符串对象
2.StringBuffer类的访问方法
length()——返回字符串长度
setLength(int newlength)——重新设定字符串的长度,新串为旧串的截余
charAt(int index)——返回指定位置的字符
setCharAt(int index,char ch)——重设指定位置的字符
append(Object obj)——将指定对象转换为字符串,添加到原串尾
insert(int offset,Object obj)——将指定对象转换为字符串,然后插入到从offset开始的位置
toString()——将字符串转换成String对象
capacity()——返回当前StringBuffer类对象分配的字符空间的数量
getChars(int srcBegin,int srcEnd,char dst[],int dstBegin)——将字符串中从srcBegin到srcEnd的字符拷贝到数组dst[]中开始位置为dstBegin中。
3.StringTokenizer
有时候分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。要实现以上的要求可以使用java.util包中的StringTokenizer类。该类只要用途是将字符串以界定符为界,分析为一个个的token,定界符可以自己指定。
例:
StringTokenlizer fenxi=new StringTokenizer(“We are student”);
StringTokenlizer fenxi=new StringTokenizer(“We,are;student”,“,:”);通常用while循环来逐个获取语言符号,为了控制循环,我们可以使用StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有语言符号,该方法就 返回 true,否则返回false。
另外我们还可以调用countTokens()方法得到字符串一共有多少个语言符号。
StringTokenizer 类三种构造方法:
①public StringTokenizer(String str)
为指定字符串构造一个string tokenizer。tokenizer使用默认的分集”\t\n\r\f”。
即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。
参数:str - 要解析的字符串。 抛出:NullPointerException-如果str为 null。②public StringTokenizer(String str,String delim)
为指定字符串构造一个string tokenizer。delim参数中的字符都是分隔标记的分隔符。分隔符字符本身不作为标记。
注意:如果delim为null,则此构造方法不抛出异常。但是尝试对得到StringTokenizer调用其它方法则可能抛出NullPointerException。
参数:str - 要解析的字符串;delim-分隔符。③public StringTokenizer(String str,String delim,boolean returnDelims)
为指定字符串构造一个string tokenizer。delim参数中的所有字符都是分隔标记的分隔符。如果returnDelims标志为true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为1的字符串返回。如果标志为false,则跳过分隔符,只是用作标记之间的分隔符。
如果delim为null,则此构造方法不抛出异常。但是,尝试对得到的StringTokenizer调用其它方法则可能抛出NullPointerException。
参数:str -要解析的字符串;delim-分隔符。
returnDelims-指示是否将分隔符作为标记返回的标志.
抛出:NullPointerException-如果 str 为 null。