一、String类
一、概述
-
String类的对象内容不可以改变(常量,字符串底层上是一个被final修饰的数组,不能改变。),所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。
-
java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率。(可以做到修改字符串)
构造方法:
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。
代码示例:
public class Demo01StringBuilder {
public static void main(String[] args) {
// 空参数构造方法
StringBuilder builder1 = new StringBuilder();
System.out.println("builder1为:" + builder1); // builder1
// 带字符串的构造方法
StringBuilder builder2 = new StringBuilder("nxy");
System.out.println("builder2为:" + builder2);
}
}
二、StringBuilder类的append()方法
public StringBuilder append(…)":添加任意类型数据的字符串形式,并返回当前对象自己。
代码示例:
public class Demo02StringBuilder {
public static void main(String[] args) {
// 创建StringBuilder对象
StringBuilder builder1 = new StringBuilder();
// 使用append方法往StringBuilder中添加数据
// append方法返回的是this,调用方法的对象builder1,this==builder1
StringBuilder builder2 = builder1.append("abc"); // 把builder1的地址赋值给了builder2
System.out.println(builder1); // abc
System.out.println(builder2); // abc
System.out.println(builder1==builder2); // true 比较的是地址
System.out.println("=======================================");
// 使用append方法无需接受返回值
// builder1.append("defg");
// builder1.append("hijk");
// builder1.append("lmno");
// System.out.println(builder1); // abcdefghijklmno
System.out.println(builder2); // abcdefghijklmno
System.out.println("======================================");
/*
链式编程法:方法的返回值是一个对象的话,可以继续调用方法
*/
System.out.println("nxy".toUpperCase().toLowerCase().toUpperCase().toLowerCase()); // nxy
// 下面这行代码与上面23——26行效果等同
builder1.append("abc").append("defg").append("hijk").append("lmno");
System.out.println(builder1);
}
}
三、StringBuilder和String的相互转换
StringBuilder和String可以相互转换:
String——>StringBuilder:可以使用StringBuilder的构造方法 StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
StringBuilder——>String:可以使用StringBuilder中的toString方法
public String toString():将当前的StringBuilder对象转换为String对象。
代码示例:
public class Demo03StringBuilder {
public static void main(String[] args) {
// String——>StringBuilder
String str = "hello";
System.out.println("str为:" + str); // str为:hello
StringBuilder builder = new StringBuilder(str);
// 往StringBuilder中添加数据
builder.append(" world");
System.out.println("builder为:" + builder); // builder为:hello world
//StringBuilder——>String
String s = builder.toString();
System.out.println(s); // hello world
}
}