浅谈String,StringBuffer以及StringBuilder

1. String

  1.1 创建方式(特点)

    1.1.1直接在字符串常量池中创建     String str = “abc”;  【常量池也是在堆中开辟的,此方法创建了一个对象】

      当使用时,如果池中有,就会拿来直接使用。(==为true)

    1.1.2用new在堆中创建    String str = new String("abc");   【创建了两个对象,一个new,一个字符串】

    验证方法:直接用 == 比较地址。(equal比较的是内容)

  注意:字符串一旦被初始化,就不会改变。(对它改变时,是删除原有的,创建一个新的。(垃圾回收机制))

  1.2 基本方法(其他的可以去jdk读手册,很实用,找的时候先看类型,更快)

    1.2.1 获取

      int length()      获取字符串中字符的长度;

      char charAt(int index)    根据位置获得字符;

      int indexOf(int ch)  根据字符获取在字符串中第一次出现的位置(ASCII码);

      int indexOf(int ch, int fromIndex)   根据字符获取在字符串中第一次出现的位置,指定了从什么位置开始;

 

      (备注:1. int ch  ——>   String str   找字符串       2. 前面加上last,从后向前找)

      String substring(int beginIndex, int endIndex)   获取子串(含头不含尾);

 

      String substring(int beginIndex)   获取子串,到串结束;

    1.2.2 转换

      String[] split(String regex)   字符串切割

      char[] toCharArray()   字符串转换为字符数组

      byte[] getByte()   变为字节数组

      String toUpperCase()   转为大写

      String toLowerCase()   转为小写

      String replace(char oldch, char newch)   一个字符替换

      String replace(String s1, String s2)   字符串替换

    1.2.3 判断

      boolean equals(Object obj)   比较两个字符串内容是否相同

      boolean equalsIgnoreCase(String str)   忽略大小比较两个字符串内容是否相同

      boolean contain(String str)   是否包含指定字符串

      boolean startsWith(String str)   是否以指定字符串开头

      boolean endsWith(String str)   是否以指定字符串结尾

    1.2.4 比较

      int compareTo(String str)   相差多少返回多少ASCII差值,相等时为0;

 

2. StringBuffer

  2.1 特点

    2.1.1 长度可以变

    2.1.2 可以存储不同数据类型

    2.1.3 最终要转成字符串使用(toString)

    2.1.4 可以对字符串进行修改

  2.2 基本方法

    2.2.1 添加:

      StringBuffer append(data);   尾部插入

      StringBuffer insert(index, data);   指定位置插入

    2.2.2 删除:

      StringBuffer delete(start, end);   含头不含尾

      StringBuffer deleteCharAt(int index);   指定位置删除

    2.2.3 查找:

      char charAt(index);   指定位置找
           int indexOf(string);   从头找
           int lastIndexOf(string);   从尾找

    2.2.4 修改:

      StringBuffer replace(start,end,string);
         void setCharAt(index,char);

3. StringBuilder

  3.1 功能:

     和StringBuffer一模一样的对象。(jdk1.5)

  3.2 和StringBuffer区别:

    StringBuffer是线程同步的。通常用于多线程。

    StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。

 

 

4. 使用注意

  数据少时:String

    数据多且单线程时:StringBuilder

    数据多多线程时:StringBuffer

 

转载于:https://www.cnblogs.com/zhmm/p/9335157.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值