整理一下java String的基础知识,整合了一些网上大佬们的笔记资料
1.String被声明为最终的,不可被继承,内部由字符数组存储数据,也被声明为最终的决定。因此字符串也就不可变。
2.不可变:
1)用于存储散列值
2)可以使用字符串池
3)用字符串做参数安全性高
4)线程安全
3.StringBuffer / StringBuilder
1)的StringBuffer内部使用同步进行同步,线程安全
2)的StringBuilder不是线程安全的
4.String Pool
1)保存着所有字符串字面量(编译时确定,字面量及String str =“sss”;),可以用String的intern()方法将字符串添加到String Pool(运行时)。
2)Java7以后,String Pool从运行时常量池(永久带)转移到了堆中,防止字符串使用太多导致OutOdMemoryError
3)new方法创建String Pool中没有的字符串会创建出两个对象,一个在堆中(new),一个在String Pool中(字面量)
5.String类常用方法:
int length();长度
char charAt();取出指定位置的字符
char toArray();字符串转为字符数组
int indexOf();得到指定内容最后一次出现的索引
toUpperCase()/ toLowerCase();大小写转换
String [] split(“xxx”);根据给定的正则拆分字符串,返回新的字符串数组
boolean equals(Object object); 字符串对象内容比较
boolean equalsIgnoreCase(String); 忽略大小写比较字符串
boolean contains(String); 是否包含字串
boolean startWith(String)/ endsWith;以指定内容开始/结束
trim();去掉字符串两端空格
replace(char old,char new);字符替换
replaceAll(String,String);全替换
String substring(int begin,int end); 字符串截取,[开始,结束)左闭右开区间