最近学习常用类对于String类做了一些总结
String类的基础知识
①String是一个final类,代表的是不可序列化的
②String对象的字符内容是存储在一个字符数组Value[]中
③String实现serializable接口:表示字符串是支持序列化的,实现Comparable接口:表示String可以比较大小的
不可序列化的体现:
>当对字符序列重新赋值时,需要重写指定内存区域赋值,不能使用原有的vlaue值进行赋值
>对于鲜有能的字符串进行拼接的时候
>当调用String中replace()方法修改指定字符和字符串时
④String的创建方式
1.直接赋值 String str = “abc”;
2.new空的字符串 String str = new String();
3.byte数组创建
4.char数组创建
5.使用字符串创建
例题:String s = new String("abc");的方式创建对象时,在内存中创建了几个对象?
创建了两个对象.一个是在堆空间中new()的结构
char[]对应的常量池中的数据:"abc";
⑤常用的方法
int length():返回字符串的长度
char charAt(int index):返回索引处的字符
boolean isEmpty():判断字符串是否为空
String toLowerCase():在默认的字符集环境下,将String中的所有的字符串转换为小写
String toUpperCase():在默认的字符集环境下,将String中的所有的字符串转换为大写
String trim(): 返回字符串的副本,忽略前部的空白和尾部的空白
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoroceCase(String anotherString ):与equals方法类似,但是忽略大小写
int CompareTo(String antherString):比较字符串的大小
⑥String与char[]之间的转换
String ------->char[]:调用String的toCharArray()
char[] -------->String:调用String的构造器
⑦String与byte[]之间的转换
String ------->byte[]:调用String的getBytes()
byte[] -------->String:调用String的构造器
⑧String,StringBuffer与StringBuilder的异同?
相同点:底层的源码都使用的是char[]存储的
不同点:String不可变的字符序列;StringBuffer是可变的字符序列,线程是安全的,但是效率相对于StringBuilder比较低;StringBuilder可变的字符序列,线程不安全,效率高.是1.5新增的