在Java中,API是一种应用程序编程接口,是JDK中提供的各种功能的Java类,是一些预先定于的函数,目的是为了提供应用程序和开发人员基于某软件或硬件的以访问一组例程的能力,无需访问源代码,或者理解内部工作机制的细节。通常是定义String和StringBuffer两个类来封装字符串,并且提供一系列操作字符串的方法,它们都位于java.lang包中,所以不需要导包就可以直接使用。 String不是一个简单类型,而是一个类,被用来表示字符序列,一旦被赋值,便不能更改其指向的字符对象,则会只向一个新的字符对象。以下就是String类的常见操作。 (1) 在使用时,往往需要对一些字符串的进行一些基本的操作,比如对字符串的长度,获得指定位置的字符等等。当然了也会有相对应的方法来解决.
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
int lastIndexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
int length() 返回此字符串的长度
标注颜色的需要注意的是一个是字符,一个是子字符,它们的结果是完全不一样的,不要以为是一样的。比如:
public class ZiFu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "abcabdefgchiabcj";
System.out.println("字符串的长度为:" +s.length());
System.out.println("字符c第一次出现的位置:" +s.indexOf("c"));
System.out.println("字符c最后一次出现的位置:" +s.lastIndexOf("c"));
System.out.println("子字符串第一次出现的位置:" +s.indexOf("ab"));
System.out.println("子字符串最后一次出现的位置:" +s.lastIndexOf("ab"));
}
}
由此可见,String类提供的方法可以很方便地获取字符串的长度,获取字符串的位置。 (2)在程序开发时,经常需要对字符串进行转换操作,将字符串转换成数组,将字符进行大小写转换等等。
String toLowerCase() 使用默认语言环境的规则将String中的所有字符都转换为小写
String toUpperCase() 使用默认语言环境的规则将String中的所有字符都转换为大写
static String valueOf(int i) 返回Int参数的字符串表示形式
char[] toCharArray() 将此字符串转换为一个字符数组
其中,valueOf()方法有很多重载的形式,float,double,char等其他基本类型的数据都可以通过该方法转为String字符串类型,例子就不一一举出来了。 (3)当用户输入数据时经常会有一些错误和空格,这时我们就使用String类的字符串替换和去除空格操作。
String replace(CharSequence oldstr,CharSequenca nawstr) 返回一个新的字符串,它通过用newstr替换此字符串中出现的所有oldstr得到的。
String trim() 返回一个新字符串,它去除了原字符串首尾的空格。
需要注意的是,trim()方法只能去除两端的空格,而不能去除中间的空格,若要想去除中间的空格,可以用replace()方法。所以replace()方法不仅可以使用字符串的替换,而且也可以去除中间空格的作用。 (4) 操作字符串时经常会进行一些判断,和一些字符串的截取和分割。
char charAt(int index) 返回到index位置的字符上,其中,index的取值范围是0(字符串长度为-1)
boolean endsWith(String suffix) 判断字符串是否以指定的字符串结尾
boolean equals(Object anObject) 将字符串与指定的字符串进行比较
boolean isEmpty() 当字符串的长度为0时,返回为true
boolean startsWith(String prefix) 判断字符串是否以指定的字符串开始
boolean contains(CharSequennce cs) 判断字符串是否以指定的字符序列
String[]split(String regex) 根据参数regex将原来的字符串分割为若干个子字符串
String substring(int beginIndex) 返回一个新字符串,它包含从指定的beginIndex处开始直到此字符串末尾的所有字符
这些例子我就不一一列出来了。 最后,StringBuffer是一个具有对象引用转递对象特点的字符串对象,和String最大的区别就是StringBuffer的内容和长度是可以改变的,就类似一个字符容器,当在其中添加或删除字符时,不会产生新的StringBuffer对象。 针对添加和删除字符的操作提供了一些方法:
StringBuffer append(char c) 添加参数到StringBuffer对象中
StringBuffer insert(int offset,String str) 将字符串中的Offset位置插入字符串str
StringBuffer deleteCharAt(int index) 移除此序列指定位置的字符
StringBuffer deleteCharAt(int strat,int end) 删除StringBuffer对象中指定范围的字符或字符串序列
StringBuffer replace(int strat,int end,String s) 在StringBuffer对象中替换指定的字符或字符串序列
void setCharAT(int index,char ch) 修改指定位置index处的字符序列
String toString() 返回StringBuffer缓冲区中的字符串
StringBuffer reverse() 将此字符序列用其反转形式取代
String类和StringBuffer类虽然有相似的地方,对于我们初学者来说还是很容易理解的,但是有很多不同的地方很容易混淆。 1,string类是表示字符串的常量,一旦建立后其内容和长度就不能改变。而StringBuffer类是表示字符容器,其内容和长度是可以随机改变的。当你在操作字符串时,如果该字符串仅用于数据类,则用String类即可。但是如果需要对字符串中的字符进行增删操作时,则可以用StringBuffer类。 2,String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法,
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1.equals(s2)); //结果会打印true
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println("sb1.equals(sb2)); //结果会打印false
3,String类对象可以用操作符“+”进行,而StringBuffer类对象之间不能。
String s1 = "a";
String s2 = "b";
String s3 = s1 + s2;
System.out.println(s3); //打印出“ab”
StringBuffer sb1 = new StringBuffer("a");
StringBuffer sb2 = new StringBuffer("b");
StringBuffer sb3 = sb1 + sb2; //编译出错