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

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

一.StringBuilder类概述

api文档:

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

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

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

二.StringBuilder类案例

2.1 StringBuilder类的构造方法

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

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-06-30
 * @remark  StringBuilder类的构造方法
 *
 */
public class stringbuilder1 {
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		System.out.println("sb:" + sb);//sb:
		System.out.println(sb.length());//0
		
		//public StringBuilder(String str)
		StringBuilder sb2 = new StringBuilder("helloWorld");
		System.out.println("sb2:" + sb2);
		System.out.println(sb2.length());

	}

}

测试记录:

sb:
0
sb2:helloWorld
10

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

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

代码:

package Java_study;

/**
 * 
 * @author 只是甲
 * @date   2021-06-30
 * @remark StringBuilder类的3个常用API、链式编程
 *
 */
public class stringbuilder2 {
	public static void main(String[] args) {
		
		/*A.转字符串功能
        public String toString():返回此序列中数据的字符串表示形式。*/
		StringBuilder sb1 = new StringBuilder("abc");
		String s1 = sb1.toString();
		
		/*B.添加功能
         public StringBuilder append(任意类型):添加数据,并返回对象本身。*/
        //将sb地址赋值给sb3
		StringBuilder sb2 = new StringBuilder();
		StringBuilder sb3 = sb2.append("hello");
		System.out.println("sb2:" + sb2);//sb2:hello
		System.out.println("sb3:" + sb3);//sb3:hello
		System.out.println(sb2 == sb3);//比较地址值: 相等 true
		
		StringBuilder sb4 = new StringBuilder();
		sb4.append("hello");
		//append(任意类型)
		sb4.append(true);
		sb4.append(100);
		System.out.println("sb4:" + sb4);//sb4:hellotrue100
		
		//链式编程(每个.append前面所有内容都是一个对象整体)
		StringBuilder sb5 = new StringBuilder();
		sb5.append("hello").append("world").append(true).append(100);
		System.out.println("sb5:" + sb5);//sb5:helloworldtrue100
		
		/*C.反转功能
        public StringBuilder reverse()*/
		sb5.reverse();
		System.out.println("sb5.reverse():" + sb5);//sb5.reverse():001eurtdlrowolleh
	}

}

测试记录:

sb2:hello
sb3:hello
true
sb4:hellotrue100
sb5:helloworldtrue100
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

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  StringBuilder和String通过方法完成相互转换
 *
 */
public class stringbuilder3 {
	public static void main(String[] args) {
		
		//StringBuilder --> String
		StringBuilder sb1 = new StringBuilder();
		sb1.append("hello");
		
		//错误做法 直接将对象赋值给字符串基本类型 String s1 = sb1;
        //正确做法 使用StringBuilder的toString()返回字符串 String s1 = sb1.toString();
		String s1 = sb1.toString();
		System.out.println(s1);
		
		//String --> StringBuilder
		String s2 = "hello";
		StringBuilder sb2 = new StringBuilder(s2);
		System.out.println(sb2);
	}

}

测试记录:

hello
hello

2.4 SB类从数组拼接字符串

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

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

代码:

package Java_study;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  利用StringBuilder把数组拼接成一个字符串
 *
 */
public class stringbuilder4 {
	public static void main(String[] args) {
		//定义一个int类型的数组
		int[] arr = {1,2,3};
		
		//写方法实现把数组中的元素按照指定的格式拼接成一个字符串
        //调用方法
		String result = arrayToString(arr);
		
		//输出结果
		System.out.println("result:" + result);//result:[1,2,3]
	}
	
	/**
	 * @remark 将int类型数组中的元素按照指定的格式拼接成一个字符串的方法
	 * @param  arr int类型数组
	 * @return 特定格式字符串
	 */
	public static String arrayToString(int[] arr) {
		StringBuilder sb = new StringBuilder("[");
		
		for (int i = 0; i < arr.length; i++) {
			sb.append(arr[i]);
			//如果不是最后一个元素,则再拼个逗号,
			if (i != arr.length -1) {
				sb.append(",");
				//如果是最后一个元素,则再拼个又括号
			} else {
				sb.append("]");
			}
		}
		//通过StringBuilder的toString返回字符串类型
		return sb.toString();
	}

}

测试记录:

result:[1,2,3]

2.5 SB类的字符串反转

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

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

代码:

package Java_study;

import java.util.Scanner;

/**
 * 
 * @author  只是甲
 * @date    2021-07-01
 * @remark  利用StringBuilder完成字符串反转
 *
 */
public class stringbuilder5 {
	public static void main(String[] args) {
		//键盘录入一个字符串数字
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String s = sc.nextLine();
		
		//写方法实现字符串数据的反转
		
		//调用方法
		String result = myReverse(s);
		
		//输出结果
		System.out.println("result:" + result);
	}
	
	/**
	 * @remark 利用StringBuilder完成字符串反转
	 * @param s 原字符串
	 * @return 翻转后的字符串
	 */
	public static String myReverse(String s) {
		return new StringBuilder(s).reverse().toString();
	}

}

测试记录:

请输入一个字符串:
zqs
result:sqz

参考:

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

相关文章