浅谈String,StringBuffer以及StringBuilder

2018-07-19 05:38:45来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:nohup 简单运用

下一篇:分享1-3年经验的Java面试