【StringBuilder类】添加和反转方法以及StringBuilder和String相互转换

news2024/11/20 3:37:09

StringBuilder类

如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,既耗时又浪费内存空间,而这种操作还不可避免。我们可以通过Java提供的StringBuilder类来解决这个问题。StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的

String和StringBuilder的区别:

  • String:内容是不可变的
  • StringBuilder:内容是可变的

1.StringBuilder的构造方法

  • public StringBuilder():创建一个空白可变字符串对象,不含有任何内容

  • public StringBuilder(String str):根据字符串的内容来创建可变字符串对象

    package com.common.string;
    public class StringDemo08 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            System.out.println("sb:"+sb);
            System.out.println("sb.length():"+sb.length());
            StringBuilder sb2 = new StringBuilder("hello");
            System.out.println("sb2:"+sb2);
            System.out.println("sb2.length():"+sb2.length());
        }
    }
    

2.添加方法和反转方法

  • public StringBuilder append(任意类型):添加数据并返回数据本身

    package com.common.string;
    //添加方法
    public class StringDemo09 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            /*StringBuilder sb2 = sb.append("hello");
            System.out.println("sb:"+sb);
            System.out.println("sb2:"+sb2);
            System.out.println(sb==sb2);*/
            /*sb.append("hello");
            sb.append("world");
            sb.append("java");
            sb.append(100);*/
            //链式编程,返回对象本身可以用对象调方法
            sb.append("hello").append("world").append("java").append(100);
            System.out.println("sb:"+sb);
        }
    }
    

    在这里对sb和sb2进行测试看它们是否相等,添加数据返回数据本身,所以返回的还是一个对象,可以直接用链式编程直接用对象调用append()方法,简化代码。

  • public StringBuilder reverse():返回相反的字符序列

    package com.common.string;
    //反转方法
    public class StringDemo09 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello").append("world").append("java").append(100);
            System.out.println("sb:"+sb);
            sb.reverse();
            System.out.println("sb:"+sb);
        }
    }
    

在这里插入图片描述

3.StringBuilder和String相互转换

  • StringBuilder转换为String

    public String toString():通过toString()就可以实现把StringBuilder转换为String

    package com.common.string;
    public class StringDemo10 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello");
            String s = sb.toString();
            System.out.println(s);
        }
    }
    
  • String转换为StringBuilder

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

    package com.common.string;
    public class StringDemo10 {
        public static void main(String[] args) {
            String s="hello";
            StringBuilder sb = new StringBuilder(s);
            System.out.println(sb);
        }
    }
    

4.案例:使用StringBuilder的append方法拼接字符串

需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,调用该方法并在控制台输出结果。例如,数组为int[] arr={1,2,3},执行方法后的输出结果为:[1,2,3]

思路:

1.定义一个int类型的数组,用静态初始化完成数组的初始化

2.定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回。返回值类型为String,参数列表为int[] arr

3.在方法中用StringBuilder按照要求进行拼接,并把结果转成String返回

4.调用方法,用一个变量接收结果

5.输出结果

package com.common.string;
//使用StringBuilder的append方法进行拼接
public class StringDemo11 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        String s = arrayToString(arr);
        System.out.println("s:"+s);
    }
    public static String arrayToString(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("]");
        String s = sb.toString();//将StringBuilder转换为String类型
        return s;
    }
}

在这里插入图片描述

5.案例:使用StringBuilder中的reverse方法反转字符串

需求:定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果。例如:键盘录入abc,输出结果cba

思路:

1.键盘录入一个字符串,用Scanner实现

2.定义一个方法,实现字符串反转。返回值类型为String,参数为String s

3.在方法中使用链式编程用对象先调用reverse方法,再将字符串转换为String返回

4.调用该方法,用一个变量接收结果

5.输出结果

package com.common.string;
import java.util.Scanner;
public class StringDemo12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();
        String s = reverse(line);
        System.out.println("s:"+s);
    }
    public static String reverse(String s){
        //将String转为StringBuilder---reverse()----String
        /*StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        String ss = sb.toString();
        return ss;*/
        //使用链式编程
        return new StringBuilder(s).reverse().toString();
    }
}

在这里插入图片描述

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

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

相关文章

java-基础语法(一)

java-基础语法(一) 一、java变量 1.1、注释 单行注释 // // 这是单行注释文字多行注释 /* *//* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意&#xff1a;多行注释不能嵌套使用。1.2 常量 常量&#xff1a;在程序运行过程中&#xff0c;其值不可以发生改变的…

Arthas-monitor/watch/trace 相关命令使用

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 开头&#xff1a; 本章所有的命令都非常重要&#xff0c;都是使用率相当高的。 文章目录 moni…

python---列表

列表 1. 列表的介绍1.1 访问列表元素1.2 索引从0而不是1开始1.3 使用列表中的各个值1.4 修改、添加和删除元素1.4.1 修改列表元素 1.5 在列表中添加元素1.5.1 在列表末尾添加元素1.5.2 在列表中插入元素 1.6 从列表中删除元素1.6.1 使用方法pop()删除元素1.6.2 弹出列表中任何位…

【TreeSet集合】自然排序Comparator的使用

自然排序Comparator的使用 存储学生对象并遍历&#xff0c;创建TreeSet集合使用无参构造方法 要求&#xff1a;按照年龄从小到大排序&#xff0c;年龄相同时&#xff0c;按照姓名的字母顺序排序 创建学生类&#xff1a; package com.gather.set.treeset; public class Student…

【利用AI让知识体系化】前端开发学习了解业务架构

文章目录 I. 前端技术入门1.1 HTML/CSS/Javascript 简介1.2 前端框架 React/Vue/Angular 了解1.3 前端工具 Git/Webpack/npm/yarn 的使用1.4 前端调试和性能优化技巧 II. 开发综合应用2.1 工程化开发的全流程2.2 单页面应用 (SPA)2.3 数据交互和批量操作2.4 模块化和组件化开发…

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

[golang 微服务] 4. gRPC介绍,Protobuf结合gRPC 创建微服务

一.gRPC框架的介绍 简介 gRPC是一个 高性能、 开源和 通用的 RPC 框架&#xff0c; 面向移动端和 HTTP/2 设计,目前提供 C、Java 和 Go语言版本&#xff0c;分别是&#xff1a;grpc, grpc-java, grpc-go,其中 C 版本支持 C, C, Node.js, Python, Ruby, Objective-C, PHP 和 C# …

Windows Pyqt5配置环境过程(pycharm Anaconda)

必要安装 Anaconda下载地址 Pycharm下载地址 这两个推荐2019年左右的版本就行了&#xff0c;安装的时候选择“add path” Anaconda换源 换源之后叉掉终端之后再创建环境 Anaconda常用命令 Anaconda换源应该是只对conda install 有用&#xff0c;pip还要换源 使用清华源进行…

java-集合

java-集合 一、集合体系结构 集合类的特点 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以随时发生改变 集合类的体系图 ​ 二、单列集合 2.1 Collection集合&#xff08;接口&#xff09; Collection集合概述 是单列集合的顶层接口&#xff0c;它表示一…

汇编栈寄存器SS与SP使用

入栈时,栈段地址与偏移地址计算 使用a命令输入下面汇编,然后使用u命令查看 写入汇编指令到内存 修改CS:IP指向当前代码段 使用t命令执行汇编指令,详细执行如下图标号 注意每行指令执行后寄存器变化. 取内存段单元数据 将内存段单元数据送入寄存器, 多次送入数据到同一寄存…

chatgpt赋能python:Python分词处理的重要性

Python分词处理的重要性 随着互联网的飞速发展&#xff0c;大数据的普及与应用越来越广泛。人们需要从海量的数据中找到自己需要的信息。因此&#xff0c;自然语言处理技术被广泛应用&#xff0c;其中分词技术是自然语言处理中最基础的一项技术。 在这个领域中&#xff0c;Py…

JS逆向——借助playwright实现逆向

原理&#xff1a; 1.修改js文件&#xff0c;将加密方法设定为全局变量并调用。 2.使用playwright替换浏览器加载的js文件 3.在python中通过playwright实现js注入获取加密结果 实现&#xff1a; 以下面链接为例&#xff1a; Scrape | Movie 1.首先&#xff0c;要知道页面…

方法引用相关知识点

这里写目录标题 方法引用方法引用符简介代码演示 Lambda表达式支持的方法引用引用 类方法简介使用 引用对象的实例方法简介操作 引用类的实例方法简介具体代码 引用构造器简介代码演示 二级目录二级目录二级目录二级目录二级目录二级目录 方法引用 方法引用符 简介 注意 这里…

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化 SPI机制 SPI机制的应用 JDBC中加载驱动 Spring SPI Dubbo SPI SPI深入理解 API与SPI的区别 ServiceLoader JDK SPI、Spring SPI、Dubbo SPI综合对比 SPI机制 Java SPI&#xff08;Service Provider Interface&am…

Linux4.3Apache配置与应用

文章目录 计算机系统5G云计算第一章 LINUX Apache配置与应用及网页优化一、构建虚拟 Web 主机二、基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.Options指令解释6.AllowOverride指令解释7.地址限制策略8.加载独立的配…

10个Chatgpt国内可用镜像网页

自 2022 年底推出以来&#xff0c; ChatGPT一直风靡全球&#xff0c;原因显而易见。革命性的聊天机器人 AI 可以完成数量惊人的任务&#xff0c;从进行对话到撰写整篇学期论文。此外&#xff0c;ChatGPT 可以做很多您不知道的事情——从制作品牌徽标到创作音乐等等。 根据Open…

浮点数在内存中的储存(C语言)

浮点数在内存中的储存 一、浮点数简介二、浮点数在内存中的储存1.IEEE 754标准2.单精度浮点数的内存储存3.双精度浮点数的内存储存4.IEEE 754对有效数字M和指数E&#xff0c;还有一些特别规定 三、总结 一、浮点数简介 浮点数是计算机科学中的一种数据类型&#xff0c;用于存储…

2023第四届中国奢侈品数字化创新峰会

2023第四届中国奢侈品数字化创新峰会将于6月26日-27日在上海召开。 此次会议将线上线下同步举行&#xff0c;重点讨论后疫情时代奢侈品行业主要的数字化战略与趋势&#xff0c;探讨数字化技术如何成为与消费者沟通的有效手段和关键媒介&#xff0c;如何做好线上消费者洞察&…

【HashSet集合】概述和特点

HashSet集合概述和特点 1.HashSet概述 HashSet在java.util包下&#xff0c;使用时需要到爆&#xff0c;它是set接口的一个实现类&#xff0c;它所存储的元素是不可重复的&#xff0c;并且元素都是无序的&#xff0c;HashSet是根据对象的哈希值来确定元素在集合中的存储位置&a…

代码随想录第48天

1.打家劫舍&#xff1a; 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.确定递推公式 决定dp[i]的因素就是第…