1、为什么要学习StringBuilder?
1.1、String拼接100万次
- String对象做字符串拼接,字符串直接拼接100万次,运行速度非常非常的慢,当数据量比较大的时候,一般不用字符串直接拼接
javapackage stringdemo; public class StringTest { public static void main(String[] args) throws InterruptedException { long begin = System.currentTimeMillis(); String s = ""; for (int i = 0; i < 1000000; i++) { s = s + "abc"; } System.out.println(s); long end = System.currentTimeMillis(); System.out.println(String.valueOf(end - begin)); } }
1.2、StringBuilder 拼接100万次
javapackage stringdemo; public class StringTest { public static void main(String[] args) throws InterruptedException { long begin = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(""); for (int i = 0; i < 1000000; i++) { sb.append("abc"); } System.out.println(sb); long end = System.currentTimeMillis(); System.out.println(String.valueOf(end - begin)); } }
2、StringBuilder概述
- StringBuilder可以看成是一个 容器 ,创建之后里面的 内容是可变的
2.1、作用
- 提高字符串的操作效率
2.2、StringBuilder构造方法
- java在底层对它做了一些特殊处理,打印对象不是地址值而是 属性值 。
方法名 说明 * public StringBuilder() * 创建一个空白可变字符串对象,不含有任何内容 * public StringBuilder(String str) * 根据字符串的内容,来创建可变字符串对象 2.3、StringBuilder常用方法
方法名 说明 * public StringBuilder append(任意类型) * 添加数据,并返回对象本身 * public StringBuilder reverse() * 反转容器中的内容 * public int length() * 返回长度(字符出现的个数) * public String toString() * 通过toString()就可以实现把StringBuilder转换为String
javapackage stringdemo; public class StringBuilderTest { public static void main(String[] args) throws InterruptedException { StringBuffer sb = new StringBuffer("abc"); sb.append(1); sb.append(2.3); sb.append(true); System.out.println(sb);//abc12.3true sb.reverse(); System.out.println(sb);//eurt3.21cba int length = sb.length(); System.out.println(length);//11 String string = sb.toString(); System.out.println(string);//eurt3.21cba } } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2315:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.StringBuilderTest abc12.3true eurt3.21cba 11 eurt3.21cba Process finished with exit code 0
2.4、链式编程
- 当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
javapackage stringdemo; public class StringBuilderTest { public static void main(String[] args) throws InterruptedException { StringBuffer sb = new StringBuffer(); sb.append("aaa").append("bbb").append("ccc").append("ddd"); System.out.println(sb); String str = sb.toString(); System.out.println(str); } } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=23088:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.StringBuilderTest aaabbbcccddd aaabbbcccddd Process finished with exit code 0
3、使用StringBuilder的场景
- 字符串的 拼接
- 字符串的 反转
4、练习-对称字符串
- 需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
javapackage stringdemo; import java.util.Scanner; public class StringBuilderTest { public static void main(String[] args) throws InterruptedException { Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String str = sc.next(); StringBuilder sb = new StringBuilder(); sb.append(str); sb.reverse(); String string = sb.toString(); System.out.println(string); if (str.equals(string)) { System.out.println("当前字符串是对称字符串"); } else { System.out.println("当前字符串不是对称字符串"); } } } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2263:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.StringBuilderTest 请输入一个字符串 123321 123321 当前字符串是对称字符串 Process finished with exit code 0
5、练习-拼接字符串
- 需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回。调用该方法,并在控制台输出结果。
javapackage stringdemo; public class StringBuilderTest { public static void main(String[] args) throws InterruptedException { int[] arr = {1, 2, 3}; String str = arrToString(arr); System.out.println(str); } public static String arrToString(int[] arr) { StringBuilder sb = new StringBuilder(); sb.append("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { sb.append(arr[i]); } else { sb.append(arr[i]).append(", "); } } sb.append("]"); return sb.toString(); } } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2229:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.StringBuilderTest [1, 2, 3] Process finished with exit code 0
StringBuilder的基本操作
丁总学Java2023-08-14 13:37
相关推荐
Q_19284999066 分钟前
基于Spring Boot的摄影器材租赁回收系统qq_433554546 分钟前
C++ 面向对象编程:+号运算符重载,左移运算符重载Code_流苏8 分钟前
VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)数据小爬虫@25 分钟前
如何高效利用Python爬虫按关键字搜索苏宁商品ZJ_.27 分钟前
WPSJS:让 WPS 办公与 JavaScript 完美联动Narutolxy33 分钟前
深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223Hello.Reader40 分钟前
全面解析 Golang Gin 框架禁默1 小时前
深入浅出:AWT的基本组件及其应用Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入Code哈哈笑1 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活