【java|Java常用类String】一、String的使用
1.String声明为final的,不可继承
2.String实现了Serializable接口:表示字符串是支持序列化的
实现了Comparable接口:表示String可以比较大小
3. String内部定义了final char[]value用于存储字符串数据,分配空间之后内存地址不变
4.所有的成员变量都是private final 修饰的,并且没有提供对应的XXXSetter方法,不允许外部修改这些字段,并且只能对它们赋值一次
5.涉及value数组的操作(上面只提供了部分源代码)都使用拷贝数组元素的方法,保证了不能在内部修改字符数组
6. String:代表不可变的字符序列。简称:不可变性
体现:
(1)当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值
(2)当对现有的字符串进行连续操作时,也需要重新指定内存区域赋值,不能使用幽暗有的value进行赋值
(3)当调用String的replace()方法时修改指定字符或字符串,也需要重新指定内存区域赋值
7.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
8.字符串常量池中不会存储相同内容的字符串的。
9. String的实例化方式
方式一:通过字面量的方式
此时的数据声明在方法区中的字符常量池中。
方式二:通过new+构造方式
通过new+构造器的方式:此时的变量保存的是地址值,是数据在堆空间中开辟空间以后对应的地址值
10,结论:
常量与常量的拼接结果在常量池中不会存在相同内容的常量
只要其中有一个变量,记过就在堆中
如果拼接的结果调用intern()方法,返回值就在常量池中
11.== String类的常用方法==
Int length():返回字符串的长度:return value.length
Char charAt():返回某索引处的字符 return value[index]
Boolean isEmpty():判断是否是空字符串:return value.length==0
String toLoweCase():使用默认的语言环境,将String中所有字符转换为小写
String toUpperCase():使用默认的语言环境,将String中所有的字符转换为大写
String trime():返回字符串的副本,忽略前导空白和尾部空白
Boolean equals(Object obj):比较字符串的内容是否相同
Boolean equalsgnoreCase(String another String):与equals方法
String concat(String str):将指定字符串连接到此字符串的尾部。等价用”+”
Int compareTo(String anotherString):比较两个字符串大小,底层根据ASCII码进行比较
String substring(int beginindedx)返回一个新的字符串,它是此字符串的从beginindex开始截取
String substring(int beginindex,int endindex):返回一个新的字符串,它是此字符串从beginindex,endindex
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix):测试此字符串是否以指定前缀开始
boolean startsWith(String prefix,int toffset):测试此字符串从指定索引开始的子字符串是否以指定的前缀开始
boolean contains(CharSequence s):当且仅当此字符串包含指定使的char值序列时,返回true
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str,int formindex):返回指定子字符串在此字符串中出现第一次处的索引,从指定的索引开始
int lastindexOf(String str):返回指定字符串在此字符串中最右边出现处的索引
int lastindexOf(String str,int fromindex):返回指定子字符串在此字符串最后一次出现的索引,从指定的索引开始反向搜索
String replace(char oldChar,char new Char):返回一个新的字符串,它是通过newChar替换此字符串中出现的所有oldChar得到的。
String replace(CharSequence target,CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串
String replaceFirst(String regex,String reolacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串
boolean matches(String regex)告知此字符是否匹配给定的正则表达式
String[] split(String regex):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部放到最后一个元素中
12.String与char[]之间的转换
String—>char[]:调用String的toCharArray()
Char[]–>String:调用String的构造器
13.String与byte[]之间的转换
编码:String–>byte[]:调用String的getBytes()
解码:byte[]—>String:调用String的构造器
编码:字符串–>字节(看得懂—>看不懂的二进制数据)
解码:编码的逆过程,字节–>字符串(看不懂的二进制数据–>看得懂)
14.String,StringBuffer,StringBuilder三者的异同
String:不可变的字符序列:底层使用char[]存储
StringBuffer:可变的字符序列=线程安全的,效率低的=,底层使用char[]存储
=扩容问题=:如果添加的数据底层数组盛不下了,那就需要扩容底层的数组
默认情况下,扩容为原来容量的2倍+2,同时将原有的数组中的元素复制到的数组中。
指导意义:开发中建议大家使用:StringBufffre(int capacit)或StringBuffer(int capacity)
常用方法
StringBuffer append(xxx):提供了很多的apoend()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除直到位置的内容
StringBuffer replace(int start,int end,String str):吧[start,end]位置替代换为str
StringBuffer insert(int offset,xxx),在指定位置插入
StringBuffer reverse():把当前字符串序列反转
Public String substring(int start,int end):返回一个从staet开始到end索引结束的左闭右开区间的子字符串
setCharAt(int n,char ch)指定索引值,进行设置对应的字符
执行效率:StringBuilder>StringBuffer>String
推荐阅读
- 后端|微服务化的基石——持续集成
- Java|深析SpringCloud与Docker微服务架构
- 项目管理|DDD.实践思考随笔
- mybatis|MyBatis
- hadoop|Hadoop(三)
- 微信小程序开发|微信小程序--四、基础加强
- 笔记|构造HTTP
- Elasticsearch|Mysql同步数据到Elasticsearch(Logstash)
- 笔记|听书项目开发过程及重难点总结(用户管理)