字符串处理类与接口
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
一.String类和StringBuffer类
1.字符串类
Java定义String和StringBuffer两个类来封装对字符串的各种操作,他们都被放到java.lang包中。
(1)String类:String类对象的内容一旦被初始化就不能再改变,String类用于比较两个字符串、查找和抽取串中的字符或子串;字符串与其他类型之间的相互转换等。字符间的串联,则需使 用StringBuffer或者StringBuilder或"+"方法。
(2)StringBuffer类:StringBuffer类用于改变对象的内容(字符串),可以将其他各种类型的数据增加、插入到字符串,也可以翻转字符串中原来的字符。该类在多线程中使用是安全的,可同步。另外,一旦通过StringBuffer生成最终想要的字符串,可以使用StringBuffer.toString()方法将其转换成String类,然后就可以使用String类的各种方法操作这个字符串了。
(3)StringBuilder类:
StringBuffer类用于
改变对象的内容(字符串)
,可以将
其他各种类型
的数据增加、插入到字符串,也可以翻转字符串中原来的字符,与StringBuffer类拥有同样的方法(最主要的方法也为append和insert方法)。该类只能在单线程使用,不能进行内容同步,但其速度要比StringBuffer要快。
(4)CharSequence接口:CharSequence只是一个可读的字符序列值。这个接口提供统一的,只读访问许多不同种类的字符序列。CharSequence接口不能实例化出来一个对象。
2.构造方法与成员函数
String类:
(1)构造方法:
a.String() :创建一个字符串对象,对象的内容为空字符序列;
b.
String(byte[] bytes) :创建一个字符串对象,对象的内容为byte[] bytes字符串序列;
c.String(String original):创建一个字符串对象,对象的内容拷贝original对象的内容;
d.String(StringBuffer buffer) :创建一个字符串对象,对象的内容为buffer对象包含的内容;
e.String(StringBuilder builder) :创建一个字符串对象,对象的内容为
builder对象
包含的内容;
(2)常用成员方法
a.int compareTo(String anotherString):比较两个字符串,其中参数为一个字符串对象;
b.String concat(String str):将str对象的字符串,添加到该字符串末尾;
c.boolean contains(CharSequence s):判定字符串是否包含字符串序列s
d.boolean equalsIgnoreCase(String anotherString):判定一个字符串对象和另外一个字符穿对象是否相等,忽略大小写;
e.boolean equals(Object anObject):判定两个字符串对象的内容是否相等;
f.int indexOf(int ch):返回字符串中第一次出现'ch'字符的标号
g.indexOf(int ch, int fromIndex):返回字符串中从fromIndex位置开始第一次出现'ch'字符的标号
h.boolean isEmpty():判定字符串对象是否为空
i.static String join(CharSequence delimiter, CharSequence... elements):链接一串字符
k.int length():获得字符串长度
l.String replace(char oldChar, char newChar):替换原有字符串中一个字符生成一个新的字符串对象
String replace(CharSequence target, CharSequence replacement) 而不是改变原理的字符串内容
replaceAll(String regex, String replacement)
m.String substring(int beginIndex, int endIndex):截取一段子字符串(从deginIndex位置到endIndex位置)
n.char[] toCharArray():将字符串转换为字符数组,并保存到char型数组中
o.String toString():将其他对象转换成String对象字符串
p.static String valueOf(。。。):将其他类型的字符/参数/转换为字符串对象
a.StringBuffer() :创建一个StringBuffer对象,初始化一个16字符空间且存储内容为空;
b.StringBuffer(CharSequence seq) :创建一个StringBuffer对象,对象初始内容为seq;
c.StringBuffer(int capacity) :创建一个StringBuffer对象,指定空间大小为capacity;
d.StringBuffer(String str) :创建一个StringBuffer对象,初始化内容为str对象指定的字符串;
a.StringBuffer append(char c/char[] str /CharSequence s/...):添加相应内容到该字符串序列末尾处;
b.StringBuffer delete(int start, int end):删除字符串序列start到end位置段字符串序列;
c.StringBuffer insert(int offset, char[] str/ CharSequence s/...):向字符串序列offset位置插入一个字符/字符串/...
d.int length():返回StringBuffer对象所指定字符串序列字符个数;
e.StringBuffer replace(int start, int end, String str):替换指定字符串序列
f.String substring(int start, int end) :截取子字符串序列
g.String toString():将StringBuaffer对象转换为String类型对象;
StringBuilder类
public final class StringBuilder
extends Object
implements Serializable, CharSequence
构造方法:
StringBuilder()
:创建一个内容为空的大小为16字符的StringBuilder对象
StringBuilder(CharSequence seq) :创建一个StringBuilder对象,对象的内容为seq字符串序列
StringBuilder(int capacity) :创建一个String Builder对象,对象存储空间为caoacity
StringBuilder(String str):创建一个StringBuilder对象,对象的内容为str对象代表的字符串
二、应用技巧归纳
(1) String str = "abc";是一个匿名String对象,对象名为str.
相当于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
(2)连接操作符(+):将其他各种类型的数据转换成字符串,并前后连接成新的字符串
举例:String x="a"+4+"c";等价于String x=new StringBuffer().append("a").append(4).append("c").toString();
(3)String str=new StringBuffer().toString();将StringBuffer对象转换成String类对象字符串
(4)byte[] buf=new byte[1024];
String str=new String(buf,0,pos); 将字节数组转换成String类对象字符串
(5)Xxx包装类.parseXxx:将字符串转换成基本数据类型
(6)Xxx包装类对象.xxxValue:将包装类转换成基本数据类型
(7)String s1="hello";String s2="hello";上面的两个等号"="说明s1与s2是同一个对象
String s1=new String("hello");String s2=new String("hello");尽管内容相同,但确实两个不同的对象
三、实例源码
import java.io.IOException;
/*学会使用String类:程序一行一行地读取从键盘上不停输入的字符串
* 并打印显示,知道输入一行"bye"为止*/
public class ReadLine {
public static void main(String [] args)
{
byte buf[]=new byte[1024]; //此时的byte为基本数据类型
String finalInput=null;
int pos=0;
int ch=0;
System.out.println("请输入数据:");
while(true)
{
//1.从键盘读取一个字节
try{
ch=System.in.read(); //返回从键盘读取一个字节,可能会抛出IOException异常
}
catch(IOException e)
{
e.printStackTrace();
}
//2.处理从键盘读取的数据
switch(ch)
{
case '\r':
break;
case '\n': //回车键:将buf缓冲空间0~pos区间的数据转化为字符串并判定
finalInput=new String(buf,0,pos);
if(finalInput.equalsIgnoreCase("bye"))
{
return; //退出程序
}
else
{
System.out.println(finalInput);
pos=0;
break;
}
default: //如果没有按回车键则继续将输入的字符放在buf空间
buf[pos++]=(byte)ch;
break;
}
}
}
}
参考: http://docs.oracle.com/javase/8/docs/api/index.html