String和StringBuilder的区别(详细)
总的来说吧,String类的内容是不可变的,StringBuilder的内容是可变的
有好长一段时间都很迷这个String和StringBuilder之间的区别,我想着大家详细介绍一下。
他们之间最主要的区别在于对字符串拼接的处理:
- String在做字符串拼接的时候,不会覆盖掉原来的字符串,原先的字符串还在堆内存里占用着内存,这样一来,拼接的多了,会产生更多的垃圾对象,占去大量内存,现在公司里在拼接字符串这个问题都不采用String,而是采用StringBuilder。
- StringBuilder解决了字符串拼接问题,他所拼接的字符串,会自动覆盖上一级,不会产生多余的垃圾,不会占用太多内存。
- StringBuilder的基本语法
StringBuilder sb = new StringBuilder();
- StringBuilder – append()方法 reverse()反转
//创建对象
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意类型):添加数据,并返回对象本身
// StringBuilder sb2 = sb.append("hello");
//
// System.out.println("sb:" + sb);
// System.out.println("sb2:" + sb2);
// System.out.println(sb == sb2);
// sb.append("hello");
// sb.append("world");
// sb.append("java");
// sb.append(100);
//链式编程
sb.append("hello").append("world").append("java").append(100);
System.out.println("sb:" + sb);
//public StringBuilder reverse():返回相反的字符序列
sb.reverse();
System.out.println("sb:" + sb);
-
String与StringBuilder之间的转换
-
StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
-
String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
/*
//StringBuilder 转换为 String
StringBuilder sb = new StringBuilder();
sb.append("hello");
//String s = sb; //这个是错误的做法
//public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
String s = sb.toString();
System.out.println(s);
*/
//String 转换为 StringBuilder
String s = "hello";
//StringBuilder sb = s; //这个是错误的做法
//public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
- StringBuilder常用方法
方法名 说明
public StringBuilder append (任意类型) 添加数据,并返回对象本身public StringBuilder reverse() 返回相反的字符序列
public int length() 返回长度,实际存储值
public String toString() 通过toString()就可以实现把 StringBuilder转换为String
来源:CSDN
作者:有头发的铁憨憨
链接:https://blog.csdn.net/qq_44890539/article/details/104599710