String的用法

来源:互联网 发布:激活office2013软件 编辑:程序博客网 时间:2024/06/06 17:25
String是比较特殊的数据类型,它不属于基本数据类型,但是可以和使用基本数据类型一样直接赋值,不使用new关键字进行实例化。也可以像其他类型一样使用关键字new进行实例化。下面的代码都是合法的:
   String s1 = "this is a string!";
   String s2 = new String("this is another string!");
另外String在使用的时候不需要用import语句导入,还可以使用“+”这样的运算符。如果想把字符串连接起来,可以使用“+”完成。例如:s1+s2
String的一些常用方法如下。为了说明方法,方法中使用的示例字符串为:str=“this is a test!”;
求长度
方法定义:public int length()
方法描述:获取字符串中的字符的个数。
例如
str.length()
结果:
15
获取字符串中的字符
方法定义:public char charAt(int index)
方法描述:获取字符串中的第index个字符,从0 开始。
例如:
str.charAt(3)
结果:
s
注意:是第4 个字符。
取子串
有两种形式。形式一如下:
方法定义:public String substring(int beginIndex,int endIndex)
方法描述:获取从beginIndex 开始到endIndex 结束的子串,包括beginIndex,不包括endIndex
例如:
str.substring(1,4)
结果:
his
形式二如下:
方法定义:public String substring(int beginIndex)
方法描述:获取从beginIndex 开始到结束的子串
例如:
str.substring(5)
结果:
is a test!
定位字符或者字符串
4种形式。形式一如下:
方法定义:public int indexOf(int ch)
方法描述:定位参数所指定的字符。
例如:
str.indexOf(‘i’)
结果:
2
形式二如下:
方法定义:public int indexOf(int ch,int index)
方法描述:从index开始定位参数所指定的字符。
例如:
str.indexOf(‘i’,4)
结果:
5
形式三如下:
方法定义:public int indexOf(String str)
方法描述:定位参数所指定的字符串。
例如
str.indexOf("is")
结果:
2
形式4如下
方法定义public int indexOf(String str,int index)
方法描述index开始定位str所指定的字符串。
例如
str.indexOf("is",6)
结果:
-1表示没有找到
替换字符和字符串
3种形式。形式一如下:
方法定义:public String replace(char c1,char c2)
方法描述:把字符串中的字符c1替换成字符c2
例如:
str.replace('i','I')
结果:
thIs Is a test!
形式二如下:
方法定义:public String replaceAll(String s1,String s2)
方法描述:把字符串中出现的所有的s1替换成s2
例如:
replaceAll("is","IS")
结果:
thIS IS a test!
形式三如下。
方法定义:public String replaceFirst(String s1,String s2)
方法描述:把字符串中的第一个s1替换成s2
例如:
replaceFirst("is","IS")
结果:
thIS is a test!
比较字符串内容
两种形式。形式一如下:
方法定义:public boolean equals(Object o)
方法描述:比较是否与参数相同,区分大小写。
例如:
str.equals(“this”)
结果:
False
形式二如下:
方法定义:public boolean equalsIgnoreCase(Object o)
方法描述:比较是否与参数相同,不区分大写小。
例如:
str.equalsIgnoreCase(“this”)
结果:
False
大小写转换
转换成大写或者转换成小写。
转换成大写:
方法定义:public String toUpperCase()
方法描述:把字符串中的所有字符都转换成大写。
例如:
str.toUpperCase()
结果:
THIS IS A TEST!
转换成小写:
方法定义:public String toLowerCase()
方法描述:把字符串中的所有字符都转换成小写。
例如:
str.toLowerCase()
结果:
this is a test!
前缀和后缀
判断字符串是否以指定的参数开始或者结尾。
判断前缀:
方法定义:public boolean startsWith(String prefix)
方法描述:字符串是否以参数指定的子串为前缀。
例如:
str.startsWith(“this”) 
结果:
true
判断后缀:
方法定义:public boolean endsWith(String suffix)
方法描述:字符串是否以参数指定的子串为后缀。
例如:
str.endsWith(“this”)
结果:
false
【例】判断一个字符串中出现另外一个字符串中出现的次数。
package ch8;
 
import java.io.DataInputStream;
 
public class StringTest {
 public static void main(String args[]){
      System.out.println("计算第一个字符串在第二个字符串中出现的次数。");      
      DataInputStream din = new DataInputStream(System.in);
      try{
          System.out.println("请输入第一个字符串");
          String str1 = din.readLine();
          System.out.println("请输入第二个字符串");
          String str2 = din.readLine();
          String str3 = str2.replace(str1,"");
          int count = (str2.length() - str3.length())/str1.length();
          System.out.println(str1+""+str2+"中出现的次数为:"+count);
      }catch(Exception e){
          System.out.println(e.toString());
      }
     
 }
}
运行结果为:
计算第一个字符串在第二个字符串中出现的次数。
请输入第一个字符串
ab
请输入第二个字符串
abcedabsdabajab
ababcedabsdabajab中出现的次数为:4
需要注意的是String本身是一个常量,一旦一个字符串创建了,它的内容是不能改变的,那么如何解释下面的代码:
   s1+=s2;
这里并不是把字符串s2的内容添加到字符串s1的后面,而是新创建了一个字符串,内容是s1s2的连接,然后把s1指向了新创建的这个字符串。如果一个字符串的内容经常需要变动,不应该使用String,因为在变化的过程中实际上是不断创建对象的过程,这时候应该使用StringBuffer