Java—— StringBuilder 和 StringBuffer

1.介绍

由于String的不可更改特性,为了方便字符串的修改,Java中又提供了StringBuilder和Stringbuffer类,这两个类大部分功能是相同的,以下为常用方法:

    public static void main(String[] args) {StringBuilder sb1 = new StringBuilder("hello");StringBuilder sb2 = sb1;//追加:即尾插-->字符、字符串、整型数字sb1.append(' ');//hellosb1.append("world");//hello worldsb1.append(123);//hello world123System.out.println(sb1);//hello world123System.out.println(sb1 == sb2);//trueSystem.out.println(sb1.charAt(0));//获取0号位上的字符hSystem.out.println(sb1.length());//获取字符串的有效长度14System.out.println(sb1.capacity());//获取底层数组的总大小sb1.setCharAt(0,'H');//设置任意位置的字符,结果:Hello world123sb1.insert(0,"Hello world!!!");//Hello world!!!Hello world123System.out.println(sb1);//Hello world!!!Hello world123System.out.println(sb1.indexOf("Hello"));//获取Hello第一次出现的位置System.out.println(sb1.lastIndexOf("hello"));//获取hello最后一次出现的位置sb1.deleteCharAt(0);//删除首字符sb1.delete(0,5);//删除[0,5)范围内的字符String str = sb1.substring(0,5);//截取[0,5)区间中的字符以String的方式返回System.out.println(str);sb1.reverse();//字符串逆转str = sb1.toString();//将StringBuffer以String的方式返回System.out.println(str);}

String和StringBuilder最大的区别:String的内容无法修改,而StringBuilder的内容可以修改

tips:String和StringBuilder类不能直接转换,如果想要互相转换,可以采取如下原则:

  • String变为StringBuilder:利用StringBuilder的构造方法或append()方法
  • StringBuilder变为String:调用toString()方法

2. 面试题

1、String、StringBuffer、StringBuilder的区别

  • String的内容不能修改,StringBuffer和StringBuilder的内容可以修改
  • StringBuffer和StringBuilder的大部分功能是相似的
  • StringBuffer采用同步处理(多线程),属于线程安全操作;StringBuilder未采用同步处理(单线程),属于线程不安全操作

2、以下总共创建了多少个String对象(不考虑常量池之前是否存在)

        String str = new String("ab");String str = new String("a") + new String("b");

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

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

相关文章

百度中心之星

目录 新材料 星际航行 新材料 直接模拟:因为要考虑上次出现的位置,所以使用map映射最好,如果没有出现过就建立新映射,如果出现过但是已经反应过就跳过,如果出现过但是不足以反应,就建立新映射,…

react 怎样配置ant design Pro 路由?

Ant Design Pro 是基于 umi 和 dva 的框架,umi 已经预置了路由功能,只需要在 config/router.config.js 中添加路由信息即可。 例如,假设你需要为 HelloWorld 组件创建一个路由,你可以将以下代码添加到 config/router.config.js 中…

parallels版虚拟机Linux中安装parallels tools报错

按照一个博客的教程安装的可还是安装不了,请指点指点 1.先是输入name -a 输出:Linux user 6.6.9-arm64 #11 SMP Kali 6.6.9-1kali1 (2024-01-08) aarch64GNU/Linux2.按照版本号找对应的文件并下载 第一个文件: linux-headers-6.6.9-arm64_…

Three.js 性能监测工具 Stats.js

目录 前言 性能监控 引入 Stats 使用Stats 代码 前言 通过stats.js库可以查看three.js当前的渲染性能,具体说就是计算three.js的渲染帧率(FPS),所谓渲染帧率(FPS),简单说就是three.js每秒钟完成的渲染次数,一般渲染达到每秒钟60次为…

sqlite--SQL语句进阶

SQL语句进阶 函数和聚合 函数: SQL 语句支持利用函数来处理数据, 函数一般是在数据上执行的, 它给数据的转换和处理提供了方便常用的文本处理函数: 常用的文本处理函数: // 返回字符串的长度 length();//将字符串…

LeetCode42:接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码 单调栈 class Solution { public:int trap(vector<int>& height) {stack<int> stk;int result 0;stk.push(0);for (int …

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

如何在window是安装mysql数据库(从零开始)

mysql简介&#xff1a; MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是目前世界上最流行的数据库之一。MySQL最初由瑞典的MySQL AB公司开发&#xff0c;后来被Sun Microsystems收购&#xff0c;而后Sun Microsystems又被Oracle收购。My…

WPF 依赖属性原理、 附加属性

依赖属性如何节约内存 MSDN中给出了下面几种应用依赖属性的场景&#xff1a; 希望可在样式中设置属性。 希望属性支持数据绑定。 希望可使用动态资源引用设置属性。 希望从元素树中的父元素自动继承属性值。 希望属性可进行动画处理。 希望属性系统在属性系统、环境或用户…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.3,4 SPI驱动实验-I.MX6U SPI 寄存器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

【小白专用 已验证24.5.30】ThinkPHP6 视图

ThinkPHP6 视图 模板引擎支持普通标签和XML标签方式两种标签定义&#xff0c;分别用于不同的目的 标签类型描述普通标签主要用于输出变量、函数过滤和做一些基本的运算操作XML标签也称为标签库标签&#xff0c;主要完成一些逻辑判断、控制和循环输出&#xff0c;并且可扩展 c…

注意力可视化代码

读取网络层输出的特征到txt文件&#xff0c;arr为文件名 def hot(self, feature, arr):# 在第二维&#xff08;通道维&#xff09;上相加summed_tensor torch.sum(feature, dim1, keepdimTrue) # 结果形状为 [1, 1, 64, 64]selected_matrix summed_tensor.squeeze(1) # 移除…

三丰云免费服务器

三丰云网址&#xff1a; https://www.sanfengyun.com 可申请免费云服务器&#xff0c;1核/1G内存/5M宽带/有公网IP/10G SSD硬盘/免备案。 收费云服务器&#xff0c;买2年送1年&#xff0c;有很多优惠

msf攻击windows实例

环境&#xff1a;攻击机kali&#xff08;192.168.129.139&#xff09;&#xff0c;目标机windows10&#xff08;192.168.129.132&#xff09; 方法一&#xff1a;通过web站点&#xff0c;使用无文件的方式攻击利用执行&#xff08;命令执行漏洞&#xff09; 方法二&#xff1…

提示工程(Prompt Engineering)和代码生成

文心一言 提示工程&#xff08;Prompt Engineering&#xff09;和代码生成之间的关系主要体现在如何通过精心设计的提示来指导或优化代码生成的过程。以下是关于提示工程和代码生成的详细解释&#xff1a; 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程…

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024&#xff1a;深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上&#xff0c;我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑&#xff0c;并在Google Workspace中采用了KMP。紧接着&#xff0c;KotlinConf 2…

【设计模式深度剖析】【7】【结构型】【享元模式】| 以高脚杯重复使用、GUI中的按钮为例说明,并对比Java类库设计加深理解

&#x1f448;️上一篇:外观模式 | 下一篇:结构型设计模式对比&#x1f449;️ 设计模式-专栏&#x1f448;️ 目录 享元模式定义英文原话直译如何理解&#xff1f;字面理解例子&#xff1a;高脚杯的重复使用例子&#xff1a;GUI中的按钮传统方式使用享元模式 4个角色1. …

锻压设备智能制造工厂物联数字孪生平台,推进制造业数字化转型

锻压设备智能制造工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。随着全球制造业的飞速发展&#xff0c;数字化转型已经成为企业提升竞争力、实现可持续发展的关键。在锻压设备智能制造领域&#xff0c;工业物联数字孪生平台以其强大的数据集成、分析和管理能力&#…

国际物流管理系统的选择:花钱不怕,就怕花冤枉钱

现在市场上的国际物流管理系统还是非常多的&#xff0c;想在这么多类型的系统中选择一套适合自己的系统确实不是个简单的事情。 尤其是现在很多物流商其实都是比较小的国际物流商&#xff0c;很多大型的&#xff0c;过于复杂的系统并不适合这个群体。那这个群体应该怎么选择国…

mfc140u.dll丢失的解决方法有哪些?怎么全面修复mfc140u.dll文件

mfc140u.dll丢失其实相对来说不太常见到&#xff0c;因为这个文件一般是不丢失的&#xff0c;不过既然有人遇到这种问题&#xff0c;那么小编一定满足各位&#xff0c;给大家详细的唠叨一下mfc140u.dll丢失的各种解决方法&#xff0c;教大家以最快最有效率的方法去解决mfc140u.…