自由飞翔

我在仰望,java之上

统计

留言簿(2)

我关注的blog

阅读排行榜

评论排行榜

String、StringBuffer、StringBuilder

区别与联系:
1.StringBuffer是线程安全的,String和StringBuilder不是;
2.StringBuffer和StringBuilder都是可变的,修改是针对自身的,而String是不可变的,修改一次就创建一个新的String对象;
3.String和StringBuffer都是final类型;
4.一般,效率上StringBuiler>StringBuffer>String
5.StringBuilder是5.0新增的;
用法:
一、String
1.常用构造函数:
1)String(char[] value):
eg:     
char data[] = {'a', 'b', 'c'};
      String str = new String(data);
      2)String(String original):
      3)String(StringBuffer buffer): 
      4)String(StringBuilder builder): 
      5)String(byte[] bytes, String charsetName) :
      eg:
      String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1");
      String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8");
      注意:GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,
      ISO-8859-1编码是一个字节对应一个字符;
      String gbk = "我来了";  
    String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1"); 
      2.常用方法:
      1)charAt 方法,返回指定index的字符。
String string ="123456789";
char a =string.charAt(2);
System.out.print(a);
  a=3
      2)indexOf(int ch)
ch:unicode code point,如果字符串中没有ch,则返回-1
String ss = "abcde";
System.out.println(ss.indexOf(2));
System.out.println(ss.indexOf(98));
结果:-1 1
因为2对应的unicode在字符串ss中不存在,所以返回值-1,98对应的unicode 是b,所以返回值是index=1
     
      3)concat(String str)将参数连接到字符串的末尾
concatenate 如锁链般连续,使连锁,连结
string ="abc";
System.out.print(string.concat("123"));
结果:abc123
如果str的length是0,那么这个String就会被返回。
      4)hashCode 返回字符串的hashCode值
String string0 ="abc";
String string1 ="abc";
System.out.println(string1.hashCode());
System.out.println(string1.hashCode());
结果:
96354
96354
      5)contains(CharSequence s)是否包含参数
String string0 ="abcdef";
System.out.println( string0.contains("de"));
结果:true
      6)startsWith(String perfix) 是否以perfix开头,yes 返回true ,no返回false
String string ="abcbd";
System.out.println(    string.startsWith("abc"));
System.out.println(    string.startsWith("Ab"));
结果:true
false
      7)endsWith(String suffix)是否以suffix结尾,yes 返回true ,no返回false
String string ="abcde";
System.out.println(    string.endsWith("e"));
结果:true
      8)trim()去掉字符串的前后空格
String string =" abc ";
System.out.println(string.length()+","+    string.trim().length());
结果:5,3
9)length() 字符串的长度
   char chars[]={'a','b'.'c'};
    String s=new String(chars);
    int len=s.length();
10)char[] toCharArray() 将一个字符串转换成一个字符数组
11)equals()和equalsIgnoreCase() 比较两个字符串
12)substring()  
第一种是:String substring(int startIndex)
        第二种是:String substring(int startIndex,int endIndex)
13)toLowerCase() 和toUpperCase() 
二、StringBuffer
1、构造器:
StringBuffer()
   StringBuffer(int size)
   StringBuffer(String str)
   StringBuffer(CharSequence chars)
2、方法:
1)append() 可把任何类型数据的字符串表示连接到调用的StringBuffer对象的末尾
2)insert(int offset,Object) 在offset处插入Object对应的字符串到StringBuffer对象
3)delete(int start,int end) 删除字符
4)indexOf()
5)reverse() 颠倒StringBuffer对象中的字符
6)length()
7)toString()
8)subString(int start)  或subString(int start,int end)截取子串
三、StringBuilder
1.构造器
与StringBuffer相同
2.常用的方法:
与StringBuffer相同
1)追加:Append
2)插入:Insert
3)删除:Remove
4)替换:Replace
参考来源:
http://www.blogjava.net/chenpengyi/archive/2006/05/04/44492.html
http://zhuhuide2004.iteye.com/blog/562739
http://www.iteye.com/topic/1097560
http://www.cnblogs.com/crazyac/articles/2012791.html


Gavin

posted on 2011-08-21 01:00 GavinMiao 阅读(895) 评论(0)  编辑  收藏 所属分类: corejava


只有注册用户登录后才能发表评论。


网站导航: