StringBuffer、StringBuilder、String
作者:互联网
String是一个字符序列,在Java中,String的对象是不可变的,说明这是一个常量,一旦创建就不可以更改。
Ex
class GFG {
// Concatenates to String
public static void concat1(String s1)
{
s1 = s1 + "forgeeks";
}
// Method 2
// Concatenates to StringBuilder
public static void concat2(StringBuilder s2)
{
s2.append("forgeeks");
}
// Method 3
// Concatenates to StringBuffer
public static void concat3(StringBuffer s3)
{
s3.append("forgeeks");
}
// Method 4
// Main driver method
public static void main(String[] args)
{
// Custom input string
// String 1
String s1 = "Geeks";
// Calling above defined method
concat1(s1);
// s1 is not changed
System.out.println("String: " + s1);
// String 1
StringBuilder s2 = new StringBuilder("Geeks");
// Calling above defined method
concat2(s2);
// s2 is changed
System.out.println("StringBuilder: " + s2);
// String 3
StringBuffer s3 = new StringBuffer("Geeks");
// Calling above defined method
concat3(s3);
// s3 is changed
System.out.println("StringBuffer: " + s3);
}
}
output
String:Geeks
StringBuilder:Geeksforgeeks
StringBuffer:Geeksforgeeks
说明String是不可变的,更改字符串的值会创建另一个对象,concat1()中的s1存储新的字符串引用,main()和concat1()中的引用s1采引用用不同的字符串。
StringBuilder和StringBuffer都是可变的,若需要改变字符串可以使用它们。它们之间的区别在于StringBuffer是线程安全的,不过这也导致了它速度慢,所以在算法中一般使用StringBuilder。
参考文章
https://www.geeksforgeeks.org/string-vs-stringbuilder-vs-stringbuffer-in-java/
标签:String,s3,s2,s1,StringBuffer,StringBuilder 来源: https://www.cnblogs.com/frankLiang442/p/16364743.html