1.String的特点
1.String 有两种实例化的方式;
a.直接赋值 :开辟一块堆空间,可以自动入池;
b.使用new关键字:开辟两块堆空间,可以使用intern()手工入池;
c.任何一个字符串都是String类的匿名函数;
d.字符串串一旦声明不可以改变,可以改变的是String类对象的引用;
2.String不可变---》StrigBuffer(可变字符串)
String
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}
StringBuffer
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{}
StringBuilder
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence{}
String 转StringBuffer
1.利用构造函数
StringBuffer sb=new StringBuffer("字符串");
2.利用append()
StringBuffer sb=new StringBuffer();
sb.append("hello").append("world");
StringBuffer--->String
1.利用toStirng();
StringBuffer sb=new StringBuffer();
sb.append("hello").append("world");
String string = sb.toString();
2.利用String类的构造函数
StringBuffer sb=new StringBuffer();
sb.append("hello").append("world");
String str1=new String(sb);
String 和StringBuffer的比较
StringBuffer sb=new StringBuffer();
sb.append("hello").append("world");
String str="helloworld";
boolean contentEquals = str.contentEquals(sb);//true
String提供了许多方法便于开发,StringBuffer 也提供了许多的方法;
1.字符串反转
StringBuffer sb=new StringBuffer();
sb.append("god");
sb.reverse();
System.out.println(sb);//dog
2.在指定索引后面追加数据;
StringBuffer sb=new StringBuffer();
sb.append(" god!");
sb.insert(0, "my").insert(0, "oh ");
System.out.println(sb);//oh my god!
3.删除部分数据
StringBuffer sb=new StringBuffer("01234567");
sb.delete(0, 3);//下标从0开始包前不包后
System.out.println(sb);//34567
JDK1.5增加了StringBuilder类,StingBuilder在定义上和StringBuffer非常相似,几乎连方法都一样;
String,StringBuffer 和StringBuilder的区别
1.String 一旦内容声明不可以改变;StringBuffer 和StringBuilder是可变字符串;
2.StringBuffer的方法是同步(需要排队)方法,线程安全;
3.StringBuilder 的方法是异步方法,线程不安全;
在实际的开发中95%使用String,如果需要频繁修改或删除时使用StringBuffer;