-
String类
字符串是一个特殊的对象,一旦初始化就不可以被改变。
字符串对象一旦被初始化就不会被改变。
例如:String s=”abc”;
String s1=”abc”;
两个对象都指向同一个地址。所以我们可以把右边的字符串比喻成常量池,当池中已有这个常量时,新的引用不会再次创建字符串。常量池中的变量可以共享。
字符串常量池的特点:
池中没有就建立,池中有,直接使用。
String str=”abc”和String str1=new String(“abc”);的区别
str是在字符串常量池中获取的对象,str1是在堆中new出来的对象,所以地址不同。
String类中的equals方法复写了Object的equals方法,建立了String类中自己的判断字符串内容是否相等的依据。其实就是比较字符串内容。
-
String类的方法
1,获取字符串长度个数。
int length();
2,根据位置获取字符。
char charAt(intindex);
3,根据字符获取在字符串中第一次出现的位置。
int indexOf(int ch );
int indexOf(int ch ,int fromIndex);从指定位置获取在字符串中第一次出现的位置。
4,获取字符串中的一部分字符串。别名子串。
Stringsubstring(int beginIndex, int endIndex):包含begin,不包含end。
5,转换
String[]split(String regex);
6,String replace(char oldChar,charnewChar);返回一个新的字符串替换所有oldChar得到的。
7,将字符串两端的空格去除。
String trim();
8,将字符串进行连接。
Stringconcat(String );
-
StringBuffer类
字符串缓冲区类。是一个容器。线程安全的可变字符序列。
字符串(String)的组成原理是通过StringBuffer类实现的。
特点:
长度是可变化的。
可以直接操作多个数据类型。
最终会通过toString方法变成字符串。
与String区别?
答:String一旦被赋值,值将不能发生改变,而StringBuffer值还可以改变。因StringBuffer采用的是缓冲机制。一开始,首先开辟一些空间,然后,随着数据的增多,还可以继续开辟空间。这些操作的是同一个对象。
String浪费内存,在操作过程中产生大量的临时对象。
StringBuffer返回的还是StringBuffer类型。
增删改查方法
CURDàcreate update read delete
1) 存储
StringBuffer append(int i);//将指定数据作为参数添加到已有数据结尾处。
//此处的参数是基本数据类型,但不支持byte、short数据类型。
StringBuffer insert( index , 数据);//可以将数据插入指定index位置。
2) 删除
StringBuffer Delete(start,end); //删除缓冲区的数据,含头不含尾
StringBuffer Delete(index);//删除指定位置的字符
eg:清空缓冲区(所有数据)
StringBuffersb = newStringBuffer("abcde");
StringBuffer sb = newStringBuffer("abcde");
sb.delete(0,sb.length());
3) 获取
char charAt(int index);
int indexOf(String str);
int length();
String substring(int start ,int end );
4) 替换和截取
StringBuffer replace();//替换。把开始到结束位置的字符用一个新的字符串给替换。
Stringsubstring();//截取。注意,返回值是String类型,操作的不是同一对象。
5) 反转
StringBuffer reverse();将字符缓冲区中的字符反转。
四、StringBuilder类
一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,简易优先采用StringBuilder类,因为此类比StringBuffer效率高。(StringBuilder在JDK1.5版本之后出现的)
StringBuilder和StringBuffer的功能是一样的,但是有区别:
StringBuffer(JDK1.0)是线程安全的。一般用于多线程。
StringBuilder(JDK1.5)不保证线程安全。一般用于单线程。
一般来说,我们写的程序都是单线程的,所以,用StringBuilder,效率高。以后开发建议使用StringBuilder。
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------