1.1.1-Java String
Java
一、浅谈String、StringBuffer和StringBuilder的定义与区别
String类:不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。通俗理解就是如果创建一个String的对象并且赋值,之后修改它的值,其实是新建了一个对象,他们的对象名相同,值和地址不同,原来的如果没有使用就会被垃圾回收。
StringBuffer类(线程安全):它的对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。通俗理解:创建一个Stringbuffer对象,你是用了他的方法或者改变了他的值,并不会新建一个对象,而是在原来对象上进行了修改。
StringBuilder类:也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。StringBuffer实现线程安全:1.StringBuffer类中实现的方法: public synchronized int length(){return count;} 2.StringBuilder类中实现的方法:public Stringbuffer replace(int start,int end,String str){ super.replace(start,end,str); return this}.
Stringbuffer在类和方法中都添加了一个synchronizede关键字,相当于添加了一个锁。