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/

作者:frankLiang

出处:https://www.cnblogs.com/frankLiang442/p/16364743.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   瑞莫蒂  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示