码迷,mamicode.com
首页 > 其他好文 > 详细

String StringBuffer StringBuilder

时间:2018-11-20 15:06:47      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:生成   查找   学习   高效   prefix   前缀   build   bsp   []   

String

在String中,String不是基本数据类型,String的实现是通过char数组实现,char数组是final不可变类型,

private final char[] value;

String类也是final,由于String不是基本数据类型,所以默认值是null;

注意区分 null, “   ”,和new String();

Null是将string对象指向null,在堆里边没有String 对象指向的引用,

“  ”:String 在编程的过程中经常使用,所以允许它直接赋值就和基本数据一样(但它并不是基本数据类型)

New String() 调用构造方法创建一个string对象,

public String()

  { this.value = "".value; }

在字符串中直接赋值的时候会有一个先放到字符串池中,直接赋值的时候会在先在字符串池中查找,如果存在,那么直接将引用复制到对象,否则新建一个对象;可以节约内存空间,提高效率

在字符串比较过程是 == 比较的是地址(引用) 比较值需要使用equals()

常见的方法:

         equals()   ——判断内容是否相同。

         compareTo() ——判断字符串的大小关系。

         compareToIgnoreCase(String int)    ——在比较时忽略字母大小写。

         == ——判断内容与地址是否相同。

         equalsIgnoreCase() ——忽略大小写的情况下判断内容是否相同。

         reagionMatches() ——对字符串中的部分内容是否相同进行比较(详情请参考API)。

          charAt(int index) ——返回指定索引index位置上的字符,索引范围从0开始。

          indexOf(String str)——从字符串开始检索str,并返回第一次出现的位置,未出现返回-1。

          indexOf(String str,int fromIndex);——从字符串的第fromIndex个字符开始检索str。

          lastIndexOf(String str)——查找最后一次出现的位置。

          lastIndexOf(String str,int fromIndex)—-从字符串的第fromIndex个字符查找最后一次出现的位置。

          starWith(String prefix,int toffset)—–测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

          starWith(String prefix)——测试此字符串是否以指定的前缀开始。

          endsWith(String suffix)——测试此字符串是否以指定的后缀结束。

          public String subString(int beginIndex)——返回一个新的字符串,它是此字符串的一个子字符串。

          public String subString(int beginIndex,int endIndex)——返回的字符串是从beginIndex开始到endIndex-1的串。

           public String replace(char oldChar,char newChar)替换字符

         更多的看看API

StringBuffer

StringBuffer和String一样都是用来存放字符串的,但是与String实现方式不同,在对字符串的修改时不会创建新的对象,String的修改回生成一个新的对象

StringBuffer 必须通过new来创建对象,对字符串的追加删除修改都比较灵活,

 1、append():追加指定内容到当前StringBuffer对象的末尾,类似于字符串的连接,这里StringBuffer对象的内容会发生改变。

      2、insert:该类方法主要是在StringBuffer对象中插入内容。

      3、delete:该类方法主要用于移除StringBuffer对象中的内容。

StringBuilder

StringBuilder也是一可变的字符串对象, 不是线程安全的,所以的速度是最快的,主要用于追加和修改

 

三者区别

String

StringBuffer

StringBuilder

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间

StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量

可变类,速度更快

不可变

可变

可变

 

线程安全

线程不安全

上表来自:https://blog.csdn.net/weixin_41101173/article/details/79677982

 

拼接字符字符串时效率关系:append> contact>+

 

我目前还在学习,在学习期间努力每周写一篇,以上部分为个人笔记和网络搜索整理,由于学习任务多,加上个人语言组织能力不强,如果有错误请路过的大佬指出,也请见谅!!

String StringBuffer StringBuilder

标签:生成   查找   学习   高效   prefix   前缀   build   bsp   []   

原文地址:https://www.cnblogs.com/codeing-boy/p/9988394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!