String和StringBuild不是一个类,两者要区别开来.
查阅java.lang.StringBuilder
的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。
作用:提高字符串的操作效率
根据StringBuilder的API文档,常用构造方法有2个:
- public StringBuilder()`:构造一个空的StringBuilder容器。
- public StringBuilder(String str)`:构造一个StringBuilder容器,并将字符串添加进去。
/*
StringBuilder的构造方法:
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
--------------------------
使用类中的构造方法创建对象的目的:通过对象名调用成员方法
面向对象:找对象,调用对象的方法,完成一些事情
*/
public class Demo01StringBuilder {
public static void main(String[] args) {
//使用空参数构造方法创建StringBuilder对象
StringBuilder b1 = new StringBuilder();
System.out.println("b1:"+b1);//b1:
//使用带字符串参数的构造方法创建StringBuilder对象
StringBuilder b2 = new StringBuilder("abc");
System.out.println("b2:"+b2);//b2:abc
System.out.println("--------------------------------");
//int capacity() 返回StringBuilder当前容量。
System.out.println(b1.capacity());//16
System.out.println(b2.capacity());//19
System.out.println("--------------------------------");
//int length()返回StringBuilder长度(StringBuilder字符数)。
System.out.println(b1.length());//0
System.out.println(b2.length());//3
}
}
构造方法
StringBuilder方法有:
StringBuilder常用方法有:
public StringBuilder append(...)`:添加任意类型数据的字符串形式,并返回当前对象自身。
public StringBuilder reverse() `返回相反的字符序列
public String toString()`:将当前StringBuilder对象转换为String对象。
/*
StringBuilder的常用方法:
public StringBuilder append (任意类型的数据) 往StringBuilder中添加数据,并返回对象本身
public StringBuilder reverse() 把StringBuilder中的数据进行反转 abc cba
public String toString() 把StringBuilder转换为String类型
public int length() 返回长度
append:添加
reverse:转换,反转
toString:转换为字符串
length:长度
*/
public class Demo02StringBuilder {
public static void main(String[] args) {
//使用空参数构造方法创建StringBuilder对象
StringBuilder sb = new StringBuilder();
//以后使用append方法添加数据,无需接收返回值
//sb.append("abc");
//sb.append(123);
//sb.append(true);
//sb.append('#');
//sb.append(5.5);
//System.out.println(sb);//abc123true#5.5
//链式编程:append方法返回的就是StringBuilder这个对象本身,所以可以继续调用方法
sb.append("abc").append(123).append(true).append('#').append(5.5);
System.out.println(sb);//abc123true#5.5
//public StringBuilder reverse() 把StringBuilder中的数据进行反转(数据位置反转)
sb.reverse();
System.out.println(sb);//5.5#eurt321cba
//public String toString() 把StringBuilder转换为String类型
String s = sb.toString();
System.out.println("s:"+s);//s:"5.5#eurt321cba"
System.out.println(sb.length());//14
}
//使用append往StringBuilder中添加数据
//StringBuilder bb = sb.append("abc");
//System.out.println(bb);//"abc"
//System.out.println(sb);//"abc"
/*
了解:源码==>java的一些源代码
append方法的源代码:
public StringBuilder append(String str) {
super.append(str);
return this;
}
this是谁?哪个对象调用的方法,方法中的this就是哪个对象
sb.append("abc");
sb这个对象调用的append方法,方法中this就是sb
StringBuilder bb = sb.append("abc")=this=sb;
*/
//System.out.println(sb==bb);//true 引用数据类型比较的是堆内存中的地址值
}
append方法
reverse方法
toString方法
String和StringBuilder相互转换
/*
String和StringBuilder相互转换
String转换为StringBuilder==>使用StringBuilder的带参构造方法
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
StringBuilder转换为String==>使用toString方法
public String toString() 把StringBuilder转换为String类型
*/
public class Demo04StringToStringBuilder {
public static void main(String[] args) {
String s1 = "hello";
//String转换为StringBuilder
StringBuilder sb = new StringBuilder(s1);
sb.append("world");
//StringBuilder转换为String
String s2 = sb.toString();
System.out.println(s2);//helloworld
}
}
总结
1. String类:
构造方法:创建对象
String() 创建一个空的字符串对象
String(String original) 通过参数传递的字符串常量,创建一个新的字符串对象
String(char[] value)通过参数传递的字符数组,创建一个新的字符串对象
String(byte[] bytes)通过参数传递的字节数组,查询编码表,创建一个新的字符串对象
成员方法:使用对象名.方法名(参数)==>调用成员方法
1). public boolean equals(String anObject):比较两个字符串的内容是否相同。
String s1 = "abc";
String s2 = "aaa";
boolean b = s1.equals(s2);
boolean b = "abc".equals("aaa");
2). public char charAt(int index):获取字符串指定索引位置上的字符。
String s1 = "abc";
System.out.println(s1.charAt(1));//'b'
3). public int length():获取字符串的长度。
String s1 = "abc";
System.out.println(s1.length());//3
4). public String substring(int beginIndex):从beginIndex位置开始,截取到字符串的末尾
String s = "你好,我好,大家好,才是真的好";
String s2 = s.substring(6);//大家好,才是真的好
5). public String substring(int beginIndex, int endIndex):从beginIndex开始,截取到endIndex – 1处。
String s = "你好,我好,大家好,才是真的好";
String s3 = s.substring(6,9);//大家好 包含头不包含尾
6). public String replace(String old, String newStr):将当前字符串中的old字符串替换为newStr。
String s = "你好,我好,大家好,才是真的好";
需求:把字符串s中大家好,替换为"Hello"
String s2 = s.replace("大家好","Hello");// "你好,我好,Hello,才是真的好"
2. StringBuilder类:
构造方法:
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
成员方法:
1). public StringBuilder append (任意类型)添加数据,并返回对象本身
2). public StringBuilder reverse():反转数据,并返回对象本身
3). public int length():返回长度
4). public String toString():把StringBuilder转换为String类型