Java基础系列25-常用api之StringBuilder类

x33g5p2x  于2021-12-18 转载在 其他  
字(4.5k)|赞(0)|评价(0)|浏览(503)

一.StringBuilder类概述

api文档:

StringBuilder类概述:
  StringBuilder:是一个可变的字符串。字符串缓冲区类。

String和StringBuilder的区别:
  String的内容是固定的
  StringBuilder的内容是可变的

String类+=拼接字符串耗费内存原因:
  String类的+=每次拼接都会产生新的字符串对象
  而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器

二.StringBuilder类案例

2.1 StringBuilder类的构造方法

构造方法
 public StringBuilder()
 public StringBuilder(String str)

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-06-30
  6. * @remark StringBuilder类的构造方法
  7. *
  8. */
  9. public class stringbuilder1 {
  10. public static void main(String[] args) {
  11. StringBuilder sb = new StringBuilder();
  12. System.out.println("sb:" + sb);//sb:
  13. System.out.println(sb.length());//0
  14. //public StringBuilder(String str)
  15. StringBuilder sb2 = new StringBuilder("helloWorld");
  16. System.out.println("sb2:" + sb2);
  17. System.out.println(sb2.length());
  18. }
  19. }

测试记录:

  1. sb:
  2. 0
  3. sb2helloWorld
  4. 10

2.2 SB类三个常用API、链式编程

public String toString()
  返回此序列中数据的字符串表示形式。
public StringBuilder append(任意类型)
  添加数据,并返回对象本身
public StringBuilder reverse()
  反转字符串,并返回对象本身。

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-06-30
  6. * @remark StringBuilder类的3个常用API、链式编程
  7. *
  8. */
  9. public class stringbuilder2 {
  10. public static void main(String[] args) {
  11. /*A.转字符串功能
  12. public String toString():返回此序列中数据的字符串表示形式。*/
  13. StringBuilder sb1 = new StringBuilder("abc");
  14. String s1 = sb1.toString();
  15. /*B.添加功能
  16. public StringBuilder append(任意类型):添加数据,并返回对象本身。*/
  17. //将sb地址赋值给sb3
  18. StringBuilder sb2 = new StringBuilder();
  19. StringBuilder sb3 = sb2.append("hello");
  20. System.out.println("sb2:" + sb2);//sb2:hello
  21. System.out.println("sb3:" + sb3);//sb3:hello
  22. System.out.println(sb2 == sb3);//比较地址值: 相等 true
  23. StringBuilder sb4 = new StringBuilder();
  24. sb4.append("hello");
  25. //append(任意类型)
  26. sb4.append(true);
  27. sb4.append(100);
  28. System.out.println("sb4:" + sb4);//sb4:hellotrue100
  29. //链式编程(每个.append前面所有内容都是一个对象整体)
  30. StringBuilder sb5 = new StringBuilder();
  31. sb5.append("hello").append("world").append(true).append(100);
  32. System.out.println("sb5:" + sb5);//sb5:helloworldtrue100
  33. /*C.反转功能
  34. public StringBuilder reverse()*/
  35. sb5.reverse();
  36. System.out.println("sb5.reverse():" + sb5);//sb5.reverse():001eurtdlrowolleh
  37. }
  38. }

测试记录:

  1. sb2:hello
  2. sb3:hello
  3. true
  4. sb4:hellotrue100
  5. sb5:helloworldtrue100
  6. sb5.reverse():001eurtdlrowolleh

2.3 SB类与String类转换

StringBuilder和String的相互转换:
  A.StringBuilder --> String
    public String toString():通过toString()就可以实现把StringBuilder转换为String

B.String – StringBuilder
    public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-07-01
  6. * @remark StringBuilder和String通过方法完成相互转换
  7. *
  8. */
  9. public class stringbuilder3 {
  10. public static void main(String[] args) {
  11. //StringBuilder --> String
  12. StringBuilder sb1 = new StringBuilder();
  13. sb1.append("hello");
  14. //错误做法 直接将对象赋值给字符串基本类型 String s1 = sb1;
  15. //正确做法 使用StringBuilder的toString()返回字符串 String s1 = sb1.toString();
  16. String s1 = sb1.toString();
  17. System.out.println(s1);
  18. //String --> StringBuilder
  19. String s2 = "hello";
  20. StringBuilder sb2 = new StringBuilder(s2);
  21. System.out.println(sb2);
  22. }
  23. }

测试记录:

  1. hello
  2. hello

2.4 SB类从数组拼接字符串

需求:
  把数组拼接成一个字符串
  举例:int[] arr = {1,2,3};
  输出结果:[1, 2, 3]

分析:
  A:定义一个int类型的数组
  B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
  C:调用方法
  D:输出结果

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-07-01
  6. * @remark 利用StringBuilder把数组拼接成一个字符串
  7. *
  8. */
  9. public class stringbuilder4 {
  10. public static void main(String[] args) {
  11. //定义一个int类型的数组
  12. int[] arr = {1,2,3};
  13. //写方法实现把数组中的元素按照指定的格式拼接成一个字符串
  14. //调用方法
  15. String result = arrayToString(arr);
  16. //输出结果
  17. System.out.println("result:" + result);//result:[1,2,3]
  18. }
  19. /**
  20. * @remark 将int类型数组中的元素按照指定的格式拼接成一个字符串的方法
  21. * @param arr int类型数组
  22. * @return 特定格式字符串
  23. */
  24. public static String arrayToString(int[] arr) {
  25. StringBuilder sb = new StringBuilder("[");
  26. for (int i = 0; i < arr.length; i++) {
  27. sb.append(arr[i]);
  28. //如果不是最后一个元素,则再拼个逗号,
  29. if (i != arr.length -1) {
  30. sb.append(",");
  31. //如果是最后一个元素,则再拼个又括号
  32. } else {
  33. sb.append("]");
  34. }
  35. }
  36. //通过StringBuilder的toString返回字符串类型
  37. return sb.toString();
  38. }
  39. }

测试记录:

  1. result:[1,2,3]

2.5 SB类的字符串反转

需求:
  把字符串反转
  举例:键盘录入”abc”
  输出结果:”cba”

分析:
  A:键盘录入一个字符串数据
  B:写方法实现字符串数据的反转
    String – StringBuilder – reverse() – String
  C:调用方法
  D:输出结果

代码:

  1. package Java_study;
  2. import java.util.Scanner;
  3. /**
  4. *
  5. * @author 只是甲
  6. * @date 2021-07-01
  7. * @remark 利用StringBuilder完成字符串反转
  8. *
  9. */
  10. public class stringbuilder5 {
  11. public static void main(String[] args) {
  12. //键盘录入一个字符串数字
  13. Scanner sc = new Scanner(System.in);
  14. System.out.println("请输入一个字符串:");
  15. String s = sc.nextLine();
  16. //写方法实现字符串数据的反转
  17. //调用方法
  18. String result = myReverse(s);
  19. //输出结果
  20. System.out.println("result:" + result);
  21. }
  22. /**
  23. * @remark 利用StringBuilder完成字符串反转
  24. * @param s 原字符串
  25. * @return 翻转后的字符串
  26. */
  27. public static String myReverse(String s) {
  28. return new StringBuilder(s).reverse().toString();
  29. }
  30. }

测试记录:

  1. 请输入一个字符串:
  2. zqs
  3. result:sqz

参考:

  1. https://blog.csdn.net/qq_43529621/article/details/115379095

相关文章