String StringBuffer StringBuilder
Posted codeing-boy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String StringBuffer StringBuilder相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
String,StringBuffer与StringBuilder的区别
(转)String,StringBuffer与StringBuilder的区别
重温java中的String,StringBuffer,StringBuilder类