您的位置:首页 > 产品设计 > UI/UE

黑马程序员——String与StringBuffer、StringBuilder的应用与区别

2012-08-21 13:34 555 查看
------- android培训java培训、期待与您交流! ----------
String与StringBuffer、StringBuilder的应用与区别

1.String:代表字符串的一个类,该类的实例对象表示的都是字符串,创建字符窜的2中方式,String str1=“abc”;或者通过构造方法来创造,而String类的构造方法有很多种,构造方法的参数中可以传入 多种不同类型的参数,比如:new String("abc");  new String(new char[]{'a','b','c'});   new String(byte[] byte,start,end); new String(new StringBuffer()); 或者new String(new
StringBuilder());等等,最终都可以将参数类型转换为String类型。

2.对字符串的常用操作:

package com.heima.stringtest;

public class StringTest {

 public static void main(String[] args) {

  String str="abcdrfg";

  //查找

  char ch=str.charAt(4); //查找某个角标的字符,如没找到则抛出异常,IndexOutOfBoundsException角标越界。

  int a=str.indexOf('a');//查找某个字符所在的角标,若没找到则返回-1;此方法可用来判断某个字符是否在字符串中。

  int b=str.indexOf("abc");//查找某个字符串的位置。

  int c=str.indexOf('c',3);//从指定的索引处开始查找。

  //对字符串进行判断

  str.contains("abc");//判断此字符串是否包含某字符串,是则返回true,不是返回false;

  str.contentEquals("abc");//将此字符串与给定的字符串进行比较,若相同返回true,若不同返回false;

  str.endsWith("fg");//判断此字符串是否与给定的字符串结尾。

  str.startsWith("abc",0);//判断此字符窜从给定为止开始是否与给定的字符串开头。

  str.isEmpty();//判断词字符串是否为空。

  str.matches(regex);//判断此字符串是否与给定的正则表达式相匹配,若匹配返回true,若不匹配返回false。

  //替换

  str.replace("abc", "qqq"); //用新的字符串替换老的字符串,前面的是老字符串,后面的是新字符串。

  str.replace('a', 'q');//用新的字符替换老的字符,前面的是需要被替换的字符,后面的是新字符。

  str.replaceAll(regex, replacement);//regex代表一个正则表达式,用新的字符串替换掉所有匹配该正则表达式的字符串。

  str.replaceFirst(regex, replacement);//用新的字符串只替换第一个符合正则表达式的子字符串。

  //转换

  str.getBytes();//将字符串转换成字节数组,在IO流技术中要用到字节与字符的相互转换。

  str.toCharArray();//将此字符串转换成一个字符数组。

  str.toLowerCase();//将此字符串全部转为小写。

  str.toUpperCase();//将此字符串全部转成大写。

  str.trim();//去掉此字符串的头部跟尾部的空格。

  str.subSequence(2, 5);//返回该字符串的字串,包含头,不包含尾。

  str.substring(0, str.length());//返回一个新的字符子串,包含头,不包含尾。

  String.valueOf(true);//返回boolean参数的字符串表现形式。

  String.valueOf(Object obj);//返回任意对象的字符串表现形式。

  //切割

  String[] s=str.split(regex);//用给定的正则表达式来切割该字符串,返回的是一个字符数组。

 }

}

3.StringBuffer:是一个长度可变的字符串缓冲区,可以用来存储字符串用的,同样该缓冲也有多种用来操作字符串的方法。

package com.heima.stringtest;

public class StringBufferTest {

 public static void main(String[] args) {

  StringBuffer sb=new StringBuffer();//有多种构造函数,可以传入字符串参数,

           //构造一个不带字符串的缓冲区,也可以构造一个具有指定字符串内容的缓冲区。

  sb.append("要存储的内容");//参数可以是各种不同类型,最终都将以字符串的形式添加进去。有

        boolean,char,char[],double,float,int,long,Object,StringStringBuffer,字符串序列CharSequence等。

  sb.append(true);   //不管怎么改变缓冲区中的内容,返回的始终是这个字符串容器。

  //sb.insert(offset, str);//可以将各种不同类型的数据插入到该缓冲区的指定的位置上。

  sb.reverse();//将字符串缓冲区进行反转,返回的还是该字符串缓冲区容器。

 }

}

4:StringBuilder与StringBuffer的区别

      这2者的方法都是一样的,唯一的区别是一个是线程同步的,一个是线程不同的。在JDK1.5之前只有StringBuffer,从 JDK1. 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。StringBuffer是线程同步的,如果有多个线程同时在对容器进行操作,则会更安全,但是效率较低。开发建议用StringBuilder,速度快,效率高。

 ------- android培训java培训、期待与您交流! ---------- 

 详细请查看:http://edu.csdn.net/heima/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息