【高级特性】String,StringBuffer,StringBuilder

来源:互联网 发布:汇通网财经日历 数据 编辑:程序博客网 时间:2024/05/21 10:21

1.String

1.1 String的创建方式

常用创建方式:String str=”thisi is a string“
相同的字符串只创建一次,多个字符串常量可以同时对其内存空间引用。
不常用的创建方式:String str=new String(“this is a string”)
针对每一个字符串变量,栈内存都要开辟新的空间存储变量,即使变量是完全相同的。

1.2 String对象的特点:

  • 对象是不可变的
  • 类中每一个方法其实都是创建新的string对象(频繁的字符串拼接会频繁的创建内存空间,要尽量避免)
  • String的只读特性带来效率优化的可能(尽量不要对string变量做修改)。要修改用StringBuffer StringBuilder
  • 相同的字符串值只存一次

1.3 String常用的方法:

  • length():返回字符串的长度
  • charAt(int index):返回指定索引处的char值
  • concat(String str):将指定字符串连接到本字符串的的末尾
  • contains(CharSequence s):是否包含指定的字符串。返回一个布尔类型值,还可以 startWith(String str) endWith(String str)
  • equals(Object anObject):.字符串值的比较(==用来比较两个字符串常量引用的地址),全等为零,区分大小写
  • compareTo(String anString):字典顺序比较,不区分大小写
  • indexof(String str):指定字符的索引,返回匹配子串的第一个字符的索引值
  • split(String redex):从指定位置拆分,结果可能返回字符串数组
  • substring(int beginIndex):截取字符串
  • to Lower/UpperCase:大小写转换

1.4 String对象不适合做大量的修改操作

String对象一旦创建就不能改变,如果需要进行大量的字符串修改操作,会导致频繁的在内存里开辟新的空间。
应该使用StringBuffer或者StringBuilder或者字符数组,处理完再转换回String类型。

2 StringBuffer/StringBuilder

StringBuffer的特点

  • 线程安全的可变字符序列
  • 是一个类似于String的字符缓冲区(字符数组),通过某些方法调用,可以改变该序列的长度和内容
  • 每个字符串缓冲区都有一定的容量,只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的缓冲区数组
  • 如果内部缓冲区溢出,则此容量自动增大

StringBuilder的特点

与StringBuffer相比,在单个线程使用的时候,应优先使用StringBuilder。它支持StringBuffer的所有操作,但由于不执行同步,所以速度更快。

StringBuffer/StringBuilder的创建方式

与字符串对象不同的是,StringBuffer/StringBuilder需要用new关键字:

  • StringBuilder sb=new StringBuilder() StringBuilder sb=new
    StringBuilder(int capacity); StringBuilder sb=new
    StringBuilder(String str);

StringBuffer/StringBuilder常用方法

  • public int length() 返回存入的字符个数
  • public int capacity() 返回字符数组的容量
  • public StringBuffer append(String str) 添加字符串
  • public StringBuffer insert(int offset,String str) 在指定位置插入字符串
  • public int indexOf(String str) 查找字符串在字符数组中首次出现的下标
  • public int indexOf(String str,int fromIndex) 从指定位置开始查找
  • public int lastIndexOf(String str) 查找字符串在字符数组中最后一次出现的下标
  • public StringBuffer reverse() 字符串反转
  • public String toString() 把字符数组中的内容转换成字符串常量
0 0
原创粉丝点击