在String中,String不是基本数据类型,String的实现是经过char数组实现,char数组是final不可变类型,编程
private final char[] value;数组
String类也是final,因为String不是基本数据类型,因此默认值是null;安全
注意区分 null, “ ”,和new String();网络
Null是将string对象指向null,在堆里边没有String 对象指向的引用,app
“ ”:String 在编程的过程当中常常使用,因此容许它直接赋值就和基本数据同样(但它并非基本数据类型)学习
New String() 调用构造方法建立一个string对象,测试
public String()ui
{ this.value = "".value; }this
在字符串中直接赋值的时候会有一个先放到字符串池中,直接赋值的时候会在先在字符串池中查找,若是存在,那么直接将引用复制到对象,不然新建一个对象;能够节约内存空间,提升效率spa
在字符串比较过程是 == 比较的是地址(引用) 比较值须要使用equals()
常见的方法:
equals() ——判断内容是否相同。
compareTo() ——判断字符串的大小关系。
compareToIgnoreCase(String int) ——在比较时忽略字母大小写。
== ——判断内容与地址是否相同。
equalsIgnoreCase() ——忽略大小写的状况下判断内容是否相同。
regionMatches() ——对字符串中的部份内容是否相同进行比较(详情请参考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和String同样都是用来存放字符串的,可是与String实现方式不一样,在对字符串的修改时不会建立新的对象,String的修改回生成一个新的对象
StringBuffer 必须经过new来建立对象,对字符串的追加删除修改都比较灵活,
一、append():追加指定内容到当前StringBuffer对象的末尾,相似于字符串的链接,这里StringBuffer对象的内容会发生改变。
二、insert:该类方法主要是在StringBuffer对象中插入内容。
三、delete:该类方法主要用于移除StringBuffer对象中的内容。
StringBuilder也是一可变的字符串对象, 不是线程安全的,因此的速度是最快的,主要用于追加和修改
三者区别
String |
StringBuffer |
StringBuilder |
String的值是不可变的,这就致使每次对String的操做都会生成新的String对象,不只效率低下,并且浪费大量优先的内存空间 |
StringBuffer是可变类,和线程安全的字符串操做类,任何对它指向的字符串的操做都不会产生新的对象。每一个StringBuffer对象都有必定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增长容量 |
可变类,速度更快 |
不可变 |
可变 |
可变 |
|
线程安全 |
线程不安全 |
上表来自:https://blog.csdn.net/weixin_41101173/article/details/79677982
拼接字符字符串时效率关系:append> contact>+
我目前还在学习,在学习期间努力每周写一篇,以上部分为我的笔记和网络搜索整理,因为学习任务多,加上我的语言组织能力不强,若是有错误请路过的大佬指出,也请见谅!!