Java进阶学习笔记27——StringBuilder、StringBuffer

StringBuilder:

StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的

好处: StringBuilder比String更适合做字符串的修改操作,效率会更高,代码会更简洁。

API文档:

 StringBuilder功能真的非常丰富。

package cn.ensource.d16_stringbuiilder;

public class Test {
    public static void main(String[] args) {
        // 目标:搞清楚StringBuilder的用法和作用
        StringBuilder s = new StringBuilder("itheima");

        // 1. 拼接内容
        s.append(" Java");
        s.append(123);

        // 2. 支持链式编程的
        s.append(666).append("黑马");

        // 3. reverse方法
        System.out.println(s);
        s.reverse();
        System.out.println(s);

        // 4. length,返回字符串的长度
        System.out.println(s.length());

        // 5. 把StringBuilder对象又转换成String类型
        String res = s.reverse().toString();
        System.out.println(res);

    }
}

支持链式编程。append方法。

为啥我们的Java建议使用StringBuilder,而不用原来学过的String?

package cn.ensource.d16_stringbuiilder;

public class Test2 {
    public static void main(String[] args) {
        // 目标:掌握StringBuilder的好处
        // 需求:要拼接100万次abc
        // 先用String测试性能
//        String rs = "";
//        for (int i = 1; i <= 1000000; i++) {
//            rs = rs + "abc";
//        }
//        System.out.println(rs);

        // 使用StringBuilder演示
        StringBuilder s = new StringBuilder();
        for (int i = 1; i <= 1000000; i++) {
            s.append("abc");
        }
        System.out.println(s);
        
        // 可见StringBuilder操作字符串非常快速!!!!
    }
}

今后:

对于字符串的相关的操作,如果频繁的拼接、修改等,建议使用StringBuilder,效率高!!!

注意:如果操作字符串较少,或者不需要修改,以及定义字符串变量,还是建议使用String。

StringBuffer和StringBuilder:

注意:

StringBuffer的用法与StringBuilder是一模一样的。

但是StringBuilder是线程不安全的,StringBuffer是线程安全的。

两者API的方法基本上都是一样的。

将来很多用户进入系统,会存在线程不安全的情况。现在我们先记住这个观点。

案例:

返回任意整形数组的内容:

需求:

设计一个方法,用于返回任意整形数组的内容,要求返回的数组内容格式如:[11, 22, 33]

分析:

1)方法是否要接收数据呢?需要接收整形数组。

2)方法是否需要返回数据呢?需要返回一个拼接的结果,字符串类型

3)方法内部:遍历数组的数据,把遍历的数据都拼接起来,此时使用StringBuilder来完成拼接。

package cn.ensource.d16_stringbuiilder;

public class Test3 {
    public static void main(String[] args) {
        // 案例
        String res = getArrayData(new int[]{11, 22, 33});
        System.out.println(res);
    }

    /**
     * getArrayData方法
     */
    public static String getArrayData(int[] arr) {
        // 判断arr是否为null
        if (arr == null || arr.length == 0) {
            return null;
        }
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]);
            if (i != arr.length - 1) {
                sb.append(", ");
            }
        }
        sb.append("]");

        return sb.toString();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/646973.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA】Verilog:奇校验位生成器的实现(Odd Parity bit generator)

解释奇数奇偶校验位生成器和检查器的仿真结果及过程。 真值表和卡洛图: Odd Parity Bit Generator A B C

利用element实现简单右键

利用element-plus中的el-menu实现简单右键 实现如下 <template><main class"mainClass" contextmenu"showMenu($event)"> </main><el-menu:default-active"1"class"el-menu-demo"mode"vertical":col…

GitHub怎么修改个人资料名称name和用户名username

文档 GitHub•GitHub文档•Get started•帐户和个人资料•配置文件•自定义个人资料•个性化设置https://docs.github.com/zh/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile GitHub•GitHub文档•G…

从XPS迁移到IP Integrator

从XPS迁移到IP Integrator 概述 AMD Vivado™设计套件IP集成器可让您将包含AMD的设计缝合在一起 IP或您的自定义IP在相对较短的时间内&#xff0c;在GUI环境中工作。 就像在Xilinx Platform Studio中一样&#xff0c;您可以快速创建嵌入式处理器设计&#xff08;使用&#xff0…

【STM32】新建工程(江科大)

文章目录 STM32的开发方式库函数文件夹一、新建一个基于标准库的工程1.建立一个存放工程的文件夹2.打开Keil5 二、通过配置寄存器来完成点灯1.配置RCC寄存器2.配置PC13口&#xff08;1&#xff09;配置PC13口的模式&#xff08;2&#xff09;给PC13口输出数据 三、为寄存器添加…

5.26牛客循环结构

1002. 难点&#xff1a; 两层循环条件设置 思路 可以设置三个变量 代码 1003 思路&#xff1a; 与星号双塔差不多&#xff0c;在此基础上加大一点难度 每日练题5.23 &#xff08;EOF用法&#xff09;-CSDN博客 代码 1004 代码

微信小程序如何跳转微信公众号

1. 微信小程序如何跳转微信公众号 1.2. 微信公众号配置 登录微信公众号&#xff0c;点击【小程序管理】&#xff1a;   点击【添加】&#xff1a;   点击【关联小程序】&#xff1a;   输入小程序进行关联&#xff1a; 1.2. 微信小程序配置 登录微信小程序&#xf…

物联网应用开发--传感器数据上传新大陆云平台(STM32+SHT20温湿度+ESP8266+TCP)

实现目标 1、掌握新大陆云平台传感器的创建 2、熟悉STM32 HAL与ESP8266模块之间的通信 3、具体实现目标&#xff1a;&#xff08;1&#xff09;创建2个传感器&#xff1a;温度传感器&#xff0c;湿度传感器;&#xff08;2&#xff09;上传开发板上的SHT20温湿度传感器数据至…

游戏找不到d3dcompiler_43.dll怎么办,教你5种可靠的修复方法

在电脑使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到d3dcompiler43.dll”。这个问题通常出现在游戏或者图形处理软件中&#xff0c;它会导致程序无法正常运行。为了解决这个问题&#xff0c;我经过多次尝试和总结&#xff0c;找到了以下五…

消费者相关高效读写ZK作用

消费者分区分配策略 目录概述需求&#xff1a; 设计思路1.消费者分区分配策略2. 消费者offset的存储3. kafka消费者组案例4. kafka高效读写&Zk作用5. Ranger分区再分析 实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show …

python数据分析-基于数据挖掘对APP评分的预测

前言 当我们谈论关于APP用户分析与电子商务之间的联系时&#xff0c;机器学习在这两个领域的应用变得至关重要。App用户分析和电子商务之间存在着密切的关联&#xff0c;因为用户行为和偏好的深入理解对于提高用户体验、增加销售以及优化产品功能至关重要。故本文基于K-近邻模…

[JDK工具-5] jinfo jvm配置信息工具

文章目录 1. 介绍2. 打印所有的jvm标志信息 jinfo -flags pid3. 打印指定的jvm参数信息 jinfo -flag InitialHeapSize pid4. 启用或者禁用指定的jvm参数 jinfo -flags [|-]HeapDumpOnOutOfMemoryError pid5. 打印系统参数信息 jinfo -sysprops pid6. 打印以上所有配置信息 jinf…

蓝桥楼赛第30期-Python-第三天赛题 统计学习数据题解

楼赛 第30期 Python 模块大比拼 统计学习数据 介绍 JSON&#xff08;JavaScript Object Notation, /ˈdʒeɪsən/&#xff09;是一种轻量级的数据交换格式&#xff0c;最初是作为 JavaScript 的子集被发明的&#xff0c;但目前已独立于编程语言之外&#xff0c;成为了通用的…

加拿大门户媒体《金融邮报》《埃德蒙顿日报》新闻媒体投放

介绍 加拿大媒体广告投放是企业宣传推广的重要手段之一。在加拿大&#xff0c;主流媒体包括《金融邮报》和《埃德蒙顿日报》。《金融邮报》是加拿大唯一的全国性英文金融日报&#xff0c;总部位于多伦多&#xff0c;具有丰富的金融消息资源&#xff0c;可反映加拿大商界各方面…

解决Jupyter运行代码显示Kernel Restarting的错误

在Jupyter notebook上运行代码时发现如下错误&#xff1a; 使用VS Code运行在日志表中发现错误存在&#xff1a; 它表明在初始化"libiomp5md.dll"库时发生问题&#xff0c;因为该库已经被初始化过了&#xff0c;这个错误可能是由于程序中重复初始化OpenMP库导致的&am…

ZDH-智能营销-插件服务

目录 主题 项目源码 预览地址 安装包下载地址 插件服务 插件服务使用场景 插件服务日志 感谢支持 主题 本篇文章主要介绍ZDH-智能营销平台下的插件服务,包含插件的应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 zdh_magic_mirror: …

Spring从零开始学使用系列(四)之@PostConstruct和@PreDestroy注解的使用

如果各位老爷觉得可以&#xff0c;请点赞收藏评论&#xff0c;谢谢啦&#xff01;&#xff01; 文章中涉及到的图片均由AI生成 公众号在最下方&#xff01;&#xff01;&#xff01; 目录 1. 介绍 1.1 PostConstruct概述 1.2 PreDestroy概述 2. 基本用法 2.1 注册CommonAnn…

微信小程序基础 -- 小程序UI组件(5)

小程序UI组件 1.小程序UI组件概述 开发文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/view/component.html 什么是组件&#xff1a; 组件是视图层的基本组成单元。 组件自带一些功能与微信风格一致的样式。 一个组件通常包括 开始标签 和 结…

HTTP的由来以及发展史

HTML&HTML5的学习探索 01、Html的由来和发展史 01-01、Html的由来 HTML的英文全称是 Hypertext Marked Language&#xff0c;即超文本标记语言。HTML是由Web的发明者 Tim Berners-Lee&#xff08;蒂姆伯纳斯李&#xff09;于1990年创立的一种标记语言&#xff0c; 他是万…

从程序被SQL注入来MyBatis 再谈 #{} 与 ${} 的区别

缘由 最近在的一个项目上面&#xff0c;发现有人在给我搞 SQL 注入&#xff0c;我真的想说我那么点资源测试用的阿里云服务器&#xff0c;个人估计哈&#xff0c;估计能抗住他的请求。狗头.png 系统上面的截图 数据库截图 说句实在的&#xff0c;看到这个之后我立马就是在…