String 、StringBuffer 、StringBuilder类详解

一:String类:Java API提供的 字符串处理类。

   1)字符串是由多个字符组成的一串数据
   2)字符串可以看成是字符数组
   3)构造方法
public String(String original)把字符串数据封装成字符串对象
public String(char[] value)把字符数组的数据封装成字符串对象
public String(char[] value,int offset,int count)把字符数组中的一部分数据封装成字符
串对象
直接赋值也可以是一个对象(定义一个字符串变量)
注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中 的数据
4)String特点
 通过构造方法创建字符串对象
 String s = new String(“hello”);
 直接赋值创建字符串对象
String s = hello;
*两者创建对象的区别:new的方式会在堆内存开辟一块空间存取String对象指向方法区常量池的常量。
Public class Demo02String {
Public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
System.out.println("s1==s2:"+(s1==s2));
String s3 = "hello";
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s2==s3:"+(s2==s3));
}
}
String 、StringBuffer 、StringBuilder类详解*和运算符拼接时候注意:如果一个String是由两个常量运算得到的,相当于用双引号创建出来,反之如果运算时,等号右边有一个“运算数”不为常量(即使该“运算数”是用双引号创建的常量),则得到的结果相当于new创建的一个新的String对象
String s = "a" + "b";  String t = "ab";  以上两种创建方式,完全等价
String str1 = "abc"; String str2 = "abcd"; String str3 = "abc" + "d"; String str4 = str1 + "d";
System.out.println(str2 == str3);(true ) System.out.println(str2.equals(str3));(true)       
System.out.println(str2 == str4);(false) System.out.println(str2.equals(str4));(true)

5)String常用方法
判断功能方法
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的 str 开头
boolean endsWith(String str):判断字符串对象是否以指定的 str 结尾
获取功能方法
int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符
int indexOf(String str):获取 str 在字符串对象中第一次出现的索引,没有返回-1
String substring(int start):start 开始截取字符串到字符串结尾
String substring(int start,int end):start 开始,到 end 结束截取字符串;包括 start
不包括 end
 
 
二:StringBuilder类
String 、StringBuffer 、StringBuilder类详解
1)解决String方式子符串拼接时在常量池中产生过多的产量问题。
2)与String的区别:
String 的内容是固定的, StringBuilder 的内容是可变的,内存开销小,效率高。
3)常用方法:
添加功能
public StringBuilder append(任意类型):添加数据,并返回自身对象
 反转功能:实现倒序
public StringBuilder reverse()
 
三:String、StringBuilder、StringBuffer 的区别:
  1)效率:StringBuilder > StringBuffer>String
  2) String 是被final 修饰的类,是不可变类。StringBuilder和StringBuffer有公共父类(AbstractStringBuilder),有很多从父类继承共用的方法。StringBuffer是线程安全的。