Java基础编程练习第31题-String类和StringBuffer类
1.String类
是不可变类,即一个String对象所包含的字符串,其内容和大小永远不会被改变,只能对这个字符串进行查找、比较等操作,不能添加新的字符,不能改变字符串的长度。
2.StringBuffer类
是可变类,它们所包含的字符串可以进行添加和删除字符的操作。
举个例子:
// 使用 String 类 String str = "Hello"; str += " World"; // 实际上创建了一个新的 String 对象 System.out.println(str); // 输出 "Hello World" // 使用 StringBuffer 类 StringBuffer sb = new StringBuffer("Hello"); sb.append(" World"); // 修改了原 StringBuffer 对象的内容 System.out.println(sb.toString()); // 输出 "Hello World"
在这个例子里:String类的操作过程和StringBuffer类的操作过程看似相同实则不一样。既:
// String 类的操作过程 String str1 = "Hello"; // 创建一个 String 对象,内容为 "Hello" String str2 = str1 + " World"; // 创建一个新的 String 对象,内容为 "Hello World" // 此时,str1 仍然指向 "Hello",而 str2 指向新的字符串 "Hello World" //在这个例子中,我们首先使用 String 类创建了一个字符串 “Hello”, 然后尝试通过 += 操作符来拼接另一个字符串 " World"。在底层, 这实际上是通过创建一个新的 String 对象来完成的, 原来的 “Hello” 字符串对象没有被修改。
// StringBuffer 类的操作过程 StringBuffer sb = new StringBuffer("Hello"); // 创建一个 StringBuffer 对象,内容为 "Hello" sb.append(" World"); // 在原有对象上追加 " World",内容变为 "Hello World" // 此时,sb 仍然是指向同一个 StringBuffer 对象,但其内容已经改变 而对于 StringBuffer 类, 我们创建了一个初始内容为 “Hello” 的 StringBuffer 对象。 当我们调用 append 方法来拼接 " World" 时, 这个操作是在原有对象上进行的,没有创建新的对象。 这意味着 StringBuffer 对象的内容被修改了,而不是替换。