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

来源:互联网 发布:远程软件teamviewer 编辑:程序博客网 时间:2024/05/22 06:52
------- 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/

原创粉丝点击