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 国际」许可协议进行许可。
本文来自博客园,作者:瑞莫蒂,转载请注明原文链接:https://www.cnblogs.com/frankLiang442/p/16364743.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现