Java:StringBuilder、StringBuffer、StringJoiner

news2024/9/19 23:05:57

文章目录

  • StringBuilder
    • 代码
    • 为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的
  • StringBuffer
  • 案例:接收字符串,返回String类型的[11,22]这种形式
    • 代码
  • StringJoiner
    • 上面那个案例,用StringJoiner的方法解决

StringBuilder

跟String差不多,也是放字符串的。但是是可变的
下面的方法直接看代码
在这里插入图片描述

代码

package d13_StringBuilder;

/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 */
public class Test {
    public static void main(String[] args) {
        //两个构造方法
        //StringBuilder sb= new StringBuilder("");
        StringBuilder sb1= new StringBuilder("hello");

        //拼接/添加数据 sb.append("world");    做完操作,都是会返回本身  return this;
        sb1.append("world");//String
        System.out.println(sb1);
        sb1.append('a');//char
        System.out.println(sb1);
        //支持链式编程
        sb1.append(3).append(10.3);
        System.out.println(sb1);

        sb1.append(true);//boolean
        System.out.println(sb1);
        sb1.append(new StringBuilder("java"));//StringBuilder
        System.out.println(sb1);


        System.out.println("··················分隔线······························");
        //将对象的内容反转 reverse()  调用这个方法以后本身就会反转
        StringBuilder sb2= new StringBuilder("hello");
        System.out.println(sb2);
        StringBuilder sb2_re =  sb2.reverse();
        System.out.println(sb2);
        System.out.println(sb2_re);
        System.out.println("··················分隔线······························");


        //返回对象的长度 length()
        System.out.println(sb1.length());
        System.out.println(sb2.length());

        //转换为字符串 toString()
        String s1 =  sb1.toString();
        String s2 =  sb2.toString();
        System.out.println(s1);
        System.out.println(s2);
    }
}

在这里插入图片描述

为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的

  • 对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。String是不变的,每次修改都是重新指向一个内存,效率低,浪费空间
  • 注意: 如果操作字符串较少,或者不需要操作,以及定义字符串变量,还是建议使用String

StringBuffer

  • StringBuffer的用法与StringBuilder用法完全一致
  • 但SringBuffer线程安全,StringBuilder线程不安全

案例:接收字符串,返回String类型的[11,22]这种形式

代码

package d13_StringBuilder;

/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 * 完成数组的遍历,并返回正确String格式 [11,22]
 *  频繁地拼接,所以用StringBUilder
 */
public class Test3 {
    public static void main(String[] args){
        int[] arr = {11,22};
        int[] arr2 = {11,22,33};
        int[] arr3 = {};
        int[] arr4 = null;
        System.out.println(getArratData(arr));
        System.out.println(getArratData(arr2));
        System.out.println(getArratData(arr3));
        System.out.println(getArratData(arr4));
    }

    public static String getArratData(int[] arr){
        if (arr == null){
            return null;
        }
        StringBuilder rs = new StringBuilder("[");
        if (arr.length == 0 ){
            return rs.append("]").toString();
        }
        for (int i = 0; i < arr.length-1; i++) {
            rs.append(arr[i]+",");
        }
        rs.append(arr[arr.length-1]+"]");
        return rs.toString();
    }
}

在这里插入图片描述

StringJoiner

与也是放可变字符串的,好处就是在处理拼接字符串时更加方便
在这里插入图片描述
添加方法是add(),上面两个是append()

上面那个案例,用StringJoiner的方法解决

package d13_StringBuilder;

import java.util.StringJoiner;

/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-24
 * StringJoiner
 */
public class Test4 {
    public static void main(String[] args) {
        int[] arr = {11,22,33};
        System.out.println(getArratData(arr));
    }
    
    public static String getArratData(int[] arr) {
        if(arr == null){
            return  null;
        }
        if (arr.length == 0){
            return "[]";
        }
        StringJoiner rs = new StringJoiner(",","[","]");
        for(int i : arr){
            //注意看这个传值,只能传字符串
//            rs.add(String.valueOf(i));
            rs.add(i+"");
        }
        return rs.toString();
    }
}

StringJoiner在构造函数时三个参数 是 分隔符,首符号,尾符号在这里插入图片描述
也可以只写间隔符
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux服务器不能使用su切换到其他用户

1. 现象 使用非root用户登录系统后&#xff0c;想使用su - 切换到root时&#xff0c;输入正确的密码后出现&#xff1a; 一开始以为自己密码记错了&#xff0c;或者是系统被入侵后篡改了root用户密码&#xff0c;服务器上的数据非常重要。后面不通过SSH连接&#xff0c;直接去…

2024年AI最热门行业人才:计算机视觉与自然语言及语音处理设计开发工程师!

2024年&#xff0c;计算机视觉设计与开发工程师以及自然语言及语音处理设计与开发工程师将成为技术行业中的“超级明星”。无论是智能家居、自动驾驶汽车&#xff0c;还是医疗诊断、金融服务&#xff0c;AI已经深刻融入我们的日常生活&#xff0c;而这些领域的智能化转型都离不…

《机器学习》决策树 集成学习 随机森林 参数及实例解析

目录 一、集成学习 1、含义 2、集成学习代表 1&#xff09;bagging方法 2&#xff09;boosting方法 3&#xff09;stacking方法 二、随机森林 1、什么是随机森林 2、特点 1&#xff09;数据采样随机 2&#xff09;特征选取随机 3&#xff09;森林 4&#xff09;基分类器为…

LLAMA模型解析:快速掌握大模型LLM推理入门技巧

本文借助llama这个模型快速入门LLM的推理过程&#xff0c;技术细节很多都是通用的&#xff0c;也适合其他的LLM。本篇也可以作为CV快速入门NLP简易指南。 本文借助llama这个模型快速入门LLM的推理过程&#xff0c;很多技术细节都是通用的&#xff0c;也适合其他的LLM。这篇文章…

普元EOS-微前端调用base基座的ajax

1 前言 微前端调用EOS应用的服务或API&#xff0c;需要引入base基座&#xff0c;然后使用base基座中的ajax方法。 本文将介绍微前端的高开和低开使用base基座的Ajax的方法。 强烈建议不要自己引入axios或其他ajax库&#xff0c;因为EOS的服务接口都要求身份验证和授权&#…

分页查询面试记录和面试详情

文章目录 1.分页查询面试记录1.req和vo1.InterviewHistoryReq.java2.InterviewHistoryVO.java 2.InterviewController.java3.service1.InterviewHistoryService.java2.InterviewHistoryServiceImpl.java 4.测试 2.查询面试详情1.InterviewQuestionHistoryVO.java2.InterviewCon…

适合开发人员的网页爬虫工具DrissionPage

DrissionPage是一个基于Python的网页自动化工具,它集成了Selenium和Requests的功能,既能够控制浏览器进行用户界面的模拟操作,也能够直接收发数据包进行数据的获取和处理。 开源地址:DrissionPage: 基于python的网页自动化工具。既能控制浏览器,也能收发数据包。可兼顾浏…

CLion调试ROS(包括launch启动的ROS)

打开一个终端&#xff0c;切换到工作空间目录(形如&#xff1a;&#xff5e;/catkin_ws)。 在终端输入&#xff0c;source ./devel/setup.bash 启动Clion&#xff0c;一定要在输入上述命令的窗口启动Clion&#xff0c;否则会存在一些问题。 打开工程&#xff0c;这里也是一个…

【Java】——Java实现数组元素反转的两种方法

在编程中&#xff0c;我们经常会遇到需要对数组元素进行反转的需求。例如&#xff0c;给定一个整数数组arr {1, 2, 3, 4, 5}&#xff0c;我们需要将其反转为{5, 4, 3, 2, 1}。下面我们将介绍两种实现数组元素反转的方法。 方法一&#xff1a;遍历数组一半的长度进行元素互换 …

Spring注解:优雅管理依赖的艺术

在Java企业级开发的广阔天地中&#xff0c;Spring框架以其强大的依赖注入&#xff08;DI&#xff09;和面向切面编程&#xff08;AOP&#xff09;能力&#xff0c;成为了众多开发者的首选。而Spring注解&#xff0c;作为这一框架的核心特性之一&#xff0c;更是将依赖管理提升到…

如何通过数字化资产管理提升企业运营效率

在当今快速发展的商业环境中&#xff0c;企业的资产管理正逐步向数字化迈进。数字化资产管理系统不仅帮助企业提高资产利用率&#xff0c;还能降低管理成本&#xff0c;提升整体运营效率。常达智能物联为各行业企业提供了领先的数字化资产管理解决方案&#xff0c;帮助企业实现…

AI入门指南(四):分类问题、回归问题、监督、半监督、无监督学习是什么?

文章目录 一、前言二、分类问题、回归问题是什么&#xff1f;分类问题概念常见算法分类问题的实际应用&#xff1a;银行贷款审批案例 回归问题概念常见算法回归问题实际应用&#xff1a;线性回归模型预测房价 小结 三、监督、半监督、非监督学习是什么&#xff1f;监督学习非监…

C语言基础(十五)

指针的使用&#xff1a; 测试代码1&#xff1a; #include <stdio.h> // 标准的 main 函数声明&#xff0c;包括可选的 envp 参数 int main(int argc, char *argv[], char *envp[]) { // argc 命令行参数的数量&#xff08;包括程序名&#xff09; // argv 指向字…

github源码指引:一个自制代码生成器(嵌入式脚本语言)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码目录&#xff1a;CodeTemp…

Global Illumination_Reflective Shadow Maps Deep Optimizations

之前写过一篇Global Illumination_Reflective Shadow Maps&#xff08;RSM&#xff09;、Virtual Point Light&#xff08;VPL&#xff09;&#xff0c;近期重拾传统GI技术的实际工程场景中的应用&#xff0c;于是从效率方面对RSM、LPV、VCT技术进行效率优化&#xff0c;后续逐…

HTML 全解析:从基础到实战

一、简介 HTML&#xff08;HyperText Markup Language&#xff09;即超文本标记语言&#xff0c;是用于创建网页的标准标记语言。它通过各种标签来定义网页的结构和内容&#xff0c;使得浏览器能够正确地显示网页。HTML 文档由 HTML 元素组成&#xff0c;这些元素通过标签来表…

桌面整理大师 - Mac(苹果电脑)桌面整理工具软件

桌面整理大师 与 DeskWidgets 来自同一开发者&#xff0c;是一款专为 macOS 打造的桌面分区整理工具。 与 DeskWidgets 的文件分区组件相比&#xff0c;桌面整理大师拥有更加强大的功能&#xff0c;支持调整分区的大小和样式、可快速查看非桌面目录的文件…… 桌面整理大师的宗…

【Docker】Docker学习02 | docker-cli的基本命令

本文首发于 ❄️慕雪的寒舍 简单了解一下docker client的常用命令&#xff0c;更多命令可以查看完整命令列表。不同命令之间的关系&#xff0c;可以查看下图。 如果你看不到图片&#xff0c;不用担心&#xff0c;后面对每个命令进行介绍的时候&#xff0c;会提到它们的作用的。…

内存之RAM、SRAM、DRAM、ROM、FLASH、SDRAM、DDR*(一篇文章就懂)

内存之RAM、SRAM、DRAM、ROM、FLASH、SDRAM、DDR* 内存 内存&#xff08;Memory&#xff09;指的是内存存储器&#xff0c;又称为主存&#xff0c;是CPU用来直接寻址和存储的空间&#xff0c;它相当于一座桥梁&#xff0c;用以负责诸如硬盘、主板、显卡等硬件上的数据与处理器…

高性价比开放式运动耳机有哪些?五大高性价比开放式耳机分享

作为一名数码爱好者&#xff0c;从93年入坑耳机、音响等各类电子产品以来&#xff0c;一直在测试不同品牌、不同价位的产品。现在开放式耳机比较热门&#xff0c;我自然也是不能错过的&#xff0c;开放式耳机拥有很多优点&#xff0c;很多采用人体工学设计&#xff0c;能够更加…