• 1. 1.String类在Java中,没有内置的字符串类型,字符串常量是作为String类的对象存在的。 注意: Java中的字符串和C语言中的字符串的区别 Java的字符串是一个对象,不可分割。 C语言中是一个字符数组 2011年10月20日
  • 2. 1 String类1.创建String类对象 String类的对象表示的是字符串常量,一个字符串常量创建以后就不能够被修改了。所以在创建String类对象时,通常需要向构造函数传递参数来指定创建的字符串的内容。以下是常用的String类构造函数: (1)public String(); 该构造函数用于创建一个空的字符串常量。 String str = new String(); String str = “”;2011年10月20日
  • 3. (2)public String(String value) 该构造函数用于根据一个已经存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致。 例如:String str = new String(“abc”); String str = “abc”;2011年10月20日
  • 4. 3.2 字符串常量与String类(3)public String(char value[]) 该构造函数用于根据一个已经存在的字符数组来创建一个新的字符串常量。数组将在本章后面的内容中介绍。 (4)public String(StringBuffer buffer) 该构造函数用于根据一个已经存在的StringBuffer对象来创建一个新的字符串常量。 2011年10月20日
  • 5. String类2.String类对象的常用操作及方法 在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些我们需要经常使用的方法。 (1)字符串的连接 public String concat(String str) 该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面 2011年10月20日
  • 6. String类(2)求字符串的长度 public int length() 返回字串的长度,这里的长度指的是字符串中Unicode字符的数目。 (3)求字符串中某一位置的字符 public char charAt(int index) 该方法在一个特定的位置索引一个字符串,以得到字符串中指定位置的字符。值得注意的是,在字符串中第一个字符的索引是0,第二个字符的索引是1,依次类推,最后一个字符的索引是length()-1。 2011年10月20日
  • 7. 3.2 字符串常量与String类(4)字符串的比较 比较字符串可以利用String类提供的下列方法: 1)public int compareTo(String anotherString) 该方法比较两个字符串,过程实际上是两个字符串中相同位置上的字符按Unicode中排列顺序逐个比较的结果。 如果在整个比较过程中,没有发现任何不同的地方,则表明两个字符串是完全相等的,compareTo方法返回0; 如果在比较过程中,发现了不同的地方,则比较过程会停下来,这时一定是两个字符串在某个位置上不相同, 2011年10月20日
  • 8. 3.2 字符串常量与String类如果当前字符串在这个位置上的字符大于参数中的这个位置上的字符,compareTo方法返回一个大于0的整数,否则返回一个小于0的整数 2)public boolean equals(Object anObject) 该方法比较两个字符串,该方法比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。 3)public boolean equalsIgnoreCase(String anotherString) 该方法和equals方法相似,不同的地方在于,equalsIgnoreCase方法将忽略字母大小写的区别。2011年10月20日
  • 9. 3.2 字符串常量与String类(5)从字符串中提取子串 利用String类提供的substring方法可以从一个大的字符串中提取一个子串,该方法有两种常用的形式: 1)public String substring(int beginIndex) 该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。 2)public String substring(int beginIndex, int endIndex) 该方法从当前字符串中取出一个子串,该子串从beginIndex位置起至endIndex-1为结束。子串返的长度为endIndex-beginIndex。 2011年10月20日
  • 10. 3.2 字符串常量与String类(6)判断字符串的前缀和后缀 判断字符串的前缀是否为指定的字符串利用String类提供的下列方法: 1)public boolean startsWith(String prefix) 该方法用于判断当前字符串的前缀是否和参数中指定的字符串prefix一致,如果是,返回true,否则返回false。 2)public boolean startsWith(String prefix, int toffset) 该方法用于判断当前字符串从toffset位置开始的子串的前缀是否和参数中指定的字符串prefix一致,如果是,返回true,否则返回false。 2011年10月20日
  • 11. 3.2 字符串常量与String类判断字符串的后缀是否为指定的字符串利用String类提供的方法: public boolean endsWith(String suffix) 该方法用于判断当前字符串的后缀是否和参数中指定的字符串suffix一致,如果是,返回true,否则返回false。 (7)字符串中单个字符的查找 字符串中单个字符的查找可以利用String类提供的下列方法: 1)public int indexOf(int ch) 该方法用于查找当前字符串中某一个特定字符ch出现的位置。该方法从头向后查找,如果在字符串中找到字符ch,则返回字符ch在字符串中第一次出现的位置;如果在整个字符串中没有找到字符ch,则返回-1。2011年10月20日
  • 12. 3.2 字符串常量与String类2)public int indexOf(int ch, int fromIndex) 该方法和第一种方法类似,不同的地方在于,该方法从fromIndex位置向后查找,返回的仍然是字符ch在字符串第一次出现的位置。 3)public int lastIndexOf(int ch) 该方法和第一种方法类似,不同的地方在于,该方法从字符串的末尾位置向前查找,返回的仍然是字符ch在字符串第一次出现的位置。 4)public int lastIndexOf(int ch, int fromIndex) 该方法和第二种方法类似,不同的地方在于,该方法从fromIndex位置向前查找,返回的仍然是字符ch在字符串第一次出现的位置。 2011年10月20日
  • 13. 3.2 字符串常量与String类(8)字符串中子串的查找 字符串中子串的查找与字符串中单个字符的查找十分相似,可以利用String类提供的下列方法: 1)public int indexOf(String str) 2)public int indexOf(String str, int fromIndex) 3)public int lastIndexOf(String str) 4)public int lastIndexOf(String str, int fromIndex) 2011年10月20日
  • 14. 3.2 字符串常量与String类(9)字符串中字符大小写的转换 字符串中字符大小写的转换,可以利用String类提供的下列方法: 1)public String toLowerCase() 该方法将字符串中所有字符转换成小写,并返回转换后的新串。 2)public String toUpperCase() 该方法将字符串中所有字符转换成大写,并返回转换后的新串。 (10)字符串中多余空格的去除 public String trim() 该方法只是去掉开头和结尾的空格,并返回得到的新字符串。值得注意的是,在原来字符串中间的空格并不去掉。2011年10月20日
  • 15. 3.2 字符串常量与String类(12)其它数据类型转换为字符串 Static String valueOf(boolean b) Static String valueOf(char c) Static String valueOf(char[] data) Static String valueOf(char[] data,  int offset, int count) Static String valueOf(double d) Static String valueOf(float f) Static String valueOf(int i) Static String valueOf(long l) Static String valueOf(Object obj) 【例3.4】 String类方法的应用示例程序2011年10月20日
  • 16. 3.2 字符串常量与String类(11)字符串中字符的替换 1)public String replace(char oldChar,char newChar) 该方法用字符newChar替换当前字符串中所有的字符oldChar,并返回一个新的字符串。 2)public String replaceFirst(String regex, String replacement) 该方法用字符串replacement的内容替换当前字符串中遇到的第一个和字符串regex相一致的子串,并将产生的新字符串返回。 3)public String replaceAll(String regex, String replacement) 该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回。 2011年10月20日
  • 17. 3.3 字符串变量与StringBuffer类1.创建StringBuffer类对象 StringBuffer类对象表示的是字符串变量,每一个StringBuffer类对象都是可以扩充和修改的字符串变量。以下是常用的StringBuffer类构造函数: (1)public StringBuffer() 创建一个新的空的StringBuffer类的对象,其容量初值设置成16个字符 (2)public StringBuffer(int length) 创建一个新的空的StringBuffer类的对象,其容量初值设置成length个字符 (3)public StringBuffer(String str) 创建一个新的StringBuffer类的对象,其内容为str的内容,容量设置成str长度再加16个字符 2011年10月20日
  • 18. 3.3 字符串变量与StringBuffer类2.StringBuffer类对象的常用方法 (1)StringBuffer类对象的扩充 StringBuffer类提供两组方法用来扩充StringBuffer对象所包含的字符,分别是: 1)public StringBuffer append (Object obj) append方法用于扩充StringBuffer对象所包含的字符,该方法将指定的参数对象转化为字符串后,将其附加在原来的StringBuffer对象之后,并返回新的StringBuffer对象。附加的的参数对象可以是各种数据类型的,如int、char、String、double等。 2011年10月20日
  • 19. 3.3 字符串变量与StringBuffer类2)public StringBuffer insert( int 插入位置offset,参数对象类型,参数对象名) 该方法将指定的参数对象转化为字符串后,将其插入在原来的StringBuffer对象中指定的位置,并返回新的StringBuffer对象。 (2)StringBuffer类对象的长度与容量 一个StringBuffer类对象的长度指的是它包含的字符个数;容量指的是被分配的字符空间的数量。 1)public int length() 该方法返回当前StringBuffer类对象包含的字符个数。 2)public int capacity() 该方法返回当前StringBuffer类对象分配的字符空间的数量。 2011年10月20日
  • 20. 3.3 字符串变量与StringBuffer类(3)StringBuffer类对象的修改 public void setCharAt(int index,char ch) 该方法将当前StringBuffer对象中的index位置的字符替换为指定的字符ch。 (4)字符串的赋值和加法 字符串是在程序中要经常使用的数据类型,在Java编译系统中引入了字符串的赋值和加法操作。 (5)其它方法类似String类的方法 【例3.5】 StringBuffer类的方法2011年10月20日
  • 21. 3.3 利用StringTokenizer 类分解字符串 StringTokenizer类位于java.util包中, 在使用该类时在程序开始加上 import java.util.StringTokenizer 或 import java.util.* 对于StringTokenizer类,其主要作用是将字符串按照给定的分割符进行分割,其功能和String类的split方法类似,2011年10月20日
  • 22. 3.4 利用StringTokenizer 类分解字符串 1、StringTokenizer类的构造函数 (1)StringTokenizer(String str)   为给定的字符串str创建一个StringTokenizer对象,其分隔符默认设置为“ \t\n\r\f”,亦即:空格、水平制表符tab、换行、回车、表格符 (2)StringTokenizer(String str, String delim) 为给定的字符串str创建一个StringTokenizer对象,其分隔符为指定的字符串delim,默认不包含分隔符2011年10月20日
  • 23. 3.4 利用StringTokenizer 类分解字符串 3)StringTokenizer(String str, String delim, boolean returnDelims) 为给定的字符串str创建一个StringTokenizer对象,其分隔符为指定的字符串delim,如果returnDelims为true,则创建的StringTokenizer对象中的每个字符串包含有分隔符,否则不包含分隔符 2011年10月20日
  • 24. 3.4 利用StringTokenizer 类分解字符串 2、StringTokenizer类的常用方法 Int countTokens() 返回StringTokenizer对象中被分割后子字符串的个数 Boolean hasMoreElements() 该方法的功能和hasMoreTokens()方法的功能一样 Boolean hasMoreTokens() 检测StringTokenizer对象中是否包含分割好的子字符串,有则返回true,否则返回false 2011年10月20日
  • 25. 3.4 利用StringTokenizer 类分解字符串 Object nextElement() 该方法具有nextToken()一样的功能,主要区别是它返回的不是String对象,而是一个Object对象 String nextToken() 返回StringTokenizer对象中下一个分割好的子字符串 String nextToken(String delim) 返回StringTokenizer对象中下一个分割好的子字符串,但是分隔符被重新设定为delim 【例3.6】利用StringTokenizer类编程2011年10月20日
  • 26. 3.5 字符串和字符数组其实在有些编程语言中,比如C语言,其字符串就是由字符数组构成的,每个字符串的结尾用“\0”标志,但是在Java中却不是这样的。 在Java中,字符串通常是作为String类的对象存在着,如:String s=“I like Java!”,其中“I like Java!”就是一个对象。 所以说,Java中的字符串和字符数组是完全不相同的,和C语言中的字符串也是不一样的! 2011年10月20日
  • 27. 3.5 字符串和字符数组为了方便字符串和字符数组的转换,在String类中提供了许多这样的构造函数和方法 如构造函数String(char[] value) 方法toCharArray() 方法valueOf(char[] data) 2011年10月20日