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是否为nullif (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();}
}

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

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

相关文章

在CSDN上成长的感悟,你的粉丝长啥样?

文章目录 一、写作的初衷1. 记录所学内容2.巩固所学知识3.分享与帮助4.方便后续查找5.获取激励 二、你的粉丝长啥样&#xff1f;1. 粉丝的特点与困惑2. 关于粉丝&#xff0c;细思极恐 三、继续前行、坚持初心 在CSDN上写博文&#xff0c;对于我来说&#xff0c;不仅仅是一个记录…

OTA在线旅行社系统架构:连接世界的科技纽带

随着互联网的快速发展和人们对旅行需求的不断增长&#xff0c;OTA&#xff08;Online Travel Agency&#xff09;在线旅行社成为了现代旅行业中的重要一环。OTA系统架构的设计和实现将对旅行行业产生深远影响。本文将探讨OTA在线旅行社系统架构的重要性和关键组成部分&#xff…

异构图上的连接预测一

这里写目录标题 异构图&#xff1f;处理数据&#xff1a; 异构图&#xff1f; 异构图&#xff1a;就是指节点与边类型不同的图。 连接预测&#xff1a;目的是预测图中两个节点之间是否存在一条边&#xff0c;或者是预测两个节点之间&#xff0c;在未来可能形成的连接。 eg&…

Linux系统如何通过编译方式安装python3.11.3

1.切换到/data 目录 cd /data 2.下载python源码Python-3.11.3.tgz wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz tar -xzf Python-3.11.0.tgz cd Python-3.11.3 3.配置python的安装路径 和 执行openssl的路径 ./configure --prefix/usr/local/pyth…

Java筑基(三)

Java筑基&#xff08;三&#xff09; 一、final概念1、案例1&#xff1a;采用继承&#xff1a;2、案例2&#xff1a;final修饰的类不可以被继承&#xff1a;3、案例3&#xff1a;final修饰的类不能有子类&#xff0c;但是可以有父类4、final修饰构造方法5、final修饰普通方法6、…

头歌GCC编程工具集第1关:实验工具GCC与objdump的使用

任务要求 根据提示&#xff0c;在右侧编辑器中显示的bytes.c文件中的 Begin-End 之间补充代码&#xff08;即设置一个数组的初始值&#xff09;&#xff0c;使其与如下显示的main.c文件一起编译、生成的程序在运行时输出“SUCCESS”。 程序源文件main.c的内容如下&#xff08;务…

牛客前端面试高频八股总结(1)(附文档)

1.html语义化 要求使用具有语义的标签&#xff1a;header footer article aside section nav 三点好处&#xff1a; &#xff08;1&#xff09;提高代码可读性&#xff0c;页面内容结构化&#xff0c;更清晰 &#xff08;2&#xff09;无css时&#xff0c;时页面呈现出良好…

渗透工具CobaltStrike工具的下载和安装

一、CobalStrike简介 Cobalt Strike(简称为CS)是一款基于java的渗透测试工具&#xff0c;专业的团队作战的渗透测试工具。CS使用了C/S架构&#xff0c;它分为客户端(Client)和服务端(Server)&#xff0c;服务端只要一个&#xff0c;客户端可有多个&#xff0c;多人连接服务端后…

Golang设计模式(四):观察者模式

观察者模式 什么是观察者 观察者模式(Observer Pattern)&#xff1a;定义对象之间的一种一对多依赖关系&#xff0c;使得每当一个对象状态发生改变时&#xff0c;其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅&#xff08;Publish/Subscribe&#xf…

音视频开发8 音视频中SDL的使用,SDL 在windows上环境搭建,SDL 使用 以及 常用 API说明,show YUV and play PCM

1.SDL简介 SDL&#xff08;Simple DirectMedia Layer&#xff09;&#xff0c;是一个跨平台的C语言多媒体开发库。 支持Windows、Mac OS X、Linux、iOS、Android 提供对音频、键盘、鼠标、游戏操纵杆、图形硬件的底层访问 很多的视频播放软件、模拟器、受欢迎的游戏都在使用…

面试中算法(A星寻路算法)

一、问题需求&#xff1a; 迷宫寻路游戏中&#xff0c;有一些小怪物要攻击主角&#xff0c;现在希望你给这些小怪物加上聪 明的AI (Artificial Intelligence&#xff0c;人工智能&#xff09;&#xff0c;让它们可以自动绕过迷宫中的障碍物&#xff0c;寻找到主角的所在。 A星…

json web token及JWT学习与探索

JSON Web Token&#xff08;缩写 JWT&#xff09;是目前最流行的跨域认证解决方案 作用&#xff1a; 主要是做鉴权用的登录之后存储用户信息 生成得token(令牌)如下 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjg3Njc0NDkyLCJleHAiOjE2ODc3NjA4OTJ9.Y6eFG…

Django使用fetch实现登录

Django使用session管理&#xff08;cookie&#xff09;实现了一个用户登录和会话保持功能。如果需求不太复杂可以使用Django默认的登录功能。 1 安装django-cors-headers 首先需要安装django-cors-headers pip install django-cors-headers2 在settings中配置 需要按照djan…

用Dockerfile和Shell脚本来部署一个Go项目

如何使用Dockerfile和Shell脚本来部署一个Go项目。这种方法能够帮助我们自动化构建、测试和部署流程&#xff0c;提高开发效率。 **一、项目结构和代码** 首先&#xff0c;我们需要准备一个Go项目。假设我们的项目结构如下&#xff1a; my-go-app/ ├── main.go ├── D…

1107 老鼠爱大米

solution 记录每组的最大值&#xff0c;并比较组间的最大值胖胖鼠~ #include<iostream> using namespace std; int main(){int n, m, ans, fat -1, x;scanf("%d%d", &n, &m);for(int i 0; i < n; i){ans -1;for(int j 0; j < m; j){scanf(…

【C/C++】Makefile文件的介绍与基本用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

第三周:从错误中认识到管理

1. 约定两周时间&#xff0c;完成这个功能 在管理者分配好项目任务后&#xff0c;只是口头约定两周的时间&#xff0c;没有形成需求文档。对于需求&#xff0c;人与人的理解是不一样的&#xff0c;有些太过于抽象的东西&#xff0c;太难以描绘&#xff0c;只能一而再再而三的确…

【论文复现】LSTM长短记忆网络

LSTM 前言网络架构总线遗忘门记忆门记忆细胞输出门 模型定义单个LSTM神经元的定义LSTM层内结构的定义 模型训练模型评估代码细节LSTM层单元的首尾的处理配置Tensorflow的GPU版本 前言 LSTM作为经典模型&#xff0c;可以用来做语言模型&#xff0c;实现类似于语言模型的功能&am…

vue3的proxy如何取代object和defineproperty

在 Vue 2.x 中&#xff0c;为了响应式地追踪对象属性的变化&#xff0c;Vue 使用了 Object.defineProperty 方法。但是&#xff0c;Object.defineProperty 有一些限制&#xff0c;比如它不能追踪属性的添加或删除&#xff0c;也不能直接用于数组或对象原型链上的属性。 Vue 3.…

【Torch学习笔记】

作者&#xff1a;zjk 和 的区别是逐元素相乘&#xff0c;是矩阵相乘 cat stack 的区别 cat stack 是用于沿新维度将多个张量堆叠在一起的函数。它要求所有输入张量具有相同的形状&#xff0c;并在指定的新维度上进行堆叠。