首页 > 代码库 > Java笔记八.常用APIの字符串

Java笔记八.常用APIの字符串

字符串处理类与接口
一.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(。。。):将其他类型的字符/参数/转换为字符串对象

StringBuffer类

(1)构造方法:
a.StringBuffer() :创建一个StringBuffer对象,初始化一个16字符空间且存储内容为空;
b.StringBuffer(CharSequence seq) :创建一个StringBuffer对象,对象初始内容为seq;
c.StringBuffer(int capacity) :创建一个StringBuffer对象,指定空间大小为capacity;
d.StringBuffer(String str) :创建一个StringBuffer对象,初始化内容为str对象指定的字符串;
(2)常用成员方法
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

Java笔记八.常用APIの字符串