【详解】String、StringBuffer、StringBuilder的基本用法及区别

news2024/12/23 10:23:17

一、String

1.常用的输入方式

Scanner in = new ScannerSystem.in);
//输入方法一
String s1 = in.next();
//in.next(): 读到空格就停止扫描(输入)。

//输入方法二
String s2 = in.nextLine();
//in.nextLine():读到回车就停止扫描(输入)。

2.String类型的修改

在java中字符串一旦定义了,就不可以改变。我们可以通过String的方法或者通过复制定义的字符串构造StringBuilder和StringBuffer实现对字符串的“修改”。

3.元素访问

可以通过string.charAt(int Index)对字符串某一位置上的字符进行访问,但是不可以通过该方法对其修改。

4.String方法:

String s = in.nextLine();
 
 
s.length();
//返回当前字符串的实际长度;
s.charAt(int Index);
//返回下标为Index的字符;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.compareTo(String anotherString)
//与anotherString进行比较,s大返回正数,s小返回负数,相等返回0;
s.compareTolgnore(String anotherString)
//与anotherString进行比较,s大返回正数,s小返回负数,相等返回0,但忽略大小写;
s.equals(Object anotherObject);
//相等返回true不相等返回false;
s.equalslgnoreCase(String anotherString);
//相等返回true不相等返回false,忽略大小写;
s.cancat(String str)
//连接s和str等效于“+”
s.indexOf(int n/String str);
//从头开始查找n或者str首次出现的位置(若是str返回开始字符的下标),如果没有返回-1;
s.indexOf(int n/String str,int p);
//和上一个方法类似,不同的是从左开始的某个下标往后查找。
s.lastIndexOf(int ch/String str);
//与前面类似,区别在于该方法从字符串的末尾位置向前查找。
s.lastIndexOf(int ch/String str,int p);
//和上一个方法类似,不同的是从左开始的某个下标往前查找。
s.toLowerCase();
//字符串小写转大写;
s.toUpperCase();
//字符串大写转小写;
s.replace(char a,char b);
//将s中的a都替换成b;
s.replaceFirst(String a,String b);
//将s中的第一个子串a替换成b;
s.replaceAll(String a, String b);
//将s中所有a子串替换成b;
 

二、StringBuffer

1.StringBuffer的构造

StringBuffer s = new StringBuffer();//无参数构造;
StringBuffer s = new StringBuffer(int I);//指定容量构造;
StringBuffer s = new StringBuffer(String s_);//指定字符串构造;

2.StringBuffer的方法

StringBuffer s = new StringBuffer();
 
s.Capacity();
//返回当前字符串缓冲区的容量;
s.length();
//返回当前字符串缓冲区的实际长度;
s.append(String str);
//向字符串缓冲区内添加字符串str,;
s.insert(int p,String s);
//在第p+1的位置上插入s;
s.deleteCharAt(int Index);
//删除指点字符,返回字符缓冲区;
s.delete(int start,int end);
//删除[start,end)的字符,返回字符缓冲区;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.replace(int start,int end,String str)
//将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
s.toString();
//将可变长字符串以字符串的形式返回;
s.reverse();
//将字符串s反转;

三、StringBuilder

1.StringBuilder的构造

StringBuilder s = new StringBuilder();
//无参数构造;
StringBuilder s = new StringBuilder(int I);
//指定容量构造;
StringBuilder s = new StringBuilder(String s_);
//指定字符串构造;

2.StringBuilder的方法

StringBuilder s = new StringBuilder();
 
s.Capacity();
//返回当前字符串缓冲区的容量;
s.length();
//返回当前字符串缓冲区的实际长度;
s.append(String str);
//向字符串缓冲区内添加字符串str,;
s.insert(int p,String s);
//在第p+1的位置上插入s;
s.deleteCharAt(int Index);
//删除指点字符,返回字符缓冲区;
s.delete(int start,int end);
//删除[start,end)的字符,返回字符缓冲区;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.replace(int start,int end,String str)
//将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
s.reverse();
//将字符串s反转;
s.toString();
//将可变长字符串以字符串的形式返回;

四、区别

  1. StringBuilder和StringBuffer都可通过toString()转换成 String类型

  2. String可以通过类型转换:StringBuilder(String s)就可以实现从String转化成StringBuilder。

  3. 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

  4. 和 String 类不同的是,StringBuffer 和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

  5. StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

  6. 由于 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

  7. StringBuffer是线程安全的,但是StringBuilder是没有线程功能的所以其性能会更高一点。
    在这里插入图片描述

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

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

相关文章

Avalon 学习系列 (一) —— 初步入门

相关链接 Avalon github地址 Avalon 快速入门 基于 Avalon的组件库-OniUI Avalon 入门教程 Avalon CDN 简介 Avalon 是司徒正美开发和维护的一款基于虚拟 DOM 与属性劫持的迷你、 易用、 高性能 的 前端 MVVM 框架,最早发布于2012.09.15。 其拥有超优秀的兼容性&a…

Python中的模块包第三方库详解

模块&包 模块 一个.py文件就是一个模块,里面是一些函数和变量,需要的时候可以导入。 模块命名规范: 1.以英文开头,不出现中文 2.模块名不应与系统内置函数重名 包 包本身就是一个文件夹,如果文件夹内有__init__.py文件&…

浅谈iic时序

一、iic通信核心要点 在iic通信中,进行数据传输的时候,遵循在scl时钟线高的时候保持sda电平稳定,这个电平值就是要写入的值,然后,在scl时钟线拉低的时候去改变sda上的值,达到自己想要输出的值 所以说&…

如何做架构设计

1、设计很重要 我们可以看一下周边的事物,那些好的东西,他们并不会天然存在,都是被设计出来的,因此设计就是创造和改善事物的重要过程。设计的重要之处在于,最初的设计往往决定最终的结果,甚至决定着事物的…

端口扫描伪装技术实践

端口扫描伪装技术实践 1.-f(分段传输)2.-mtu(使用指定的MTU)3.-D(使用诱饵主机隐蔽扫描)4.--source-port(源端口欺骗)5.--data-length (发送报文时附加随机数据&#xff…

入职字节外包一个月,我离职了····

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

电子元器件解析02之电容(二)——电容分类与应用场景

书接上文:电子元器件解析02之电容(一)——定义与性能参数:https://blog.csdn.net/weixin_42837669/article/details/131142286 摘要 本文总结了各种不同介质电容的特性,包括陶瓷电容、电解电容、薄膜电容等;同时对一些特殊场合的电…

Hadoop Distributed System (HDFS) 写入和读取流程

一、HDFS HDFS全称是Hadoop Distributed System。HDFS是为以流的方式存取大文件而设计的。适用于几百MB,GB以及TB,并写一次读多次的场合。而对于低延时数据访问、大量小文件、同时写和任意的文件修改,则并不是十分适合。 目前HDFS支持的使用…

HTTP协议【网络基础/应用层】

文章目录 1. 网络基础 TCP/IP2. 与HTTP密切相关的协议2.1 负责传输的 IP 协议路由选择 2.2 确保可靠性的 TCP 协议三次握手 2.3 负责域名解析的 DNS 服务2.4 各种协议和 HTTP 协议的关系 3. URL和编码问题3.1 介绍格式 3.2 编码问题 4. 初识 HTTP 协议4.1 C-S 模式4.2 通过响应…

vue中开发包、生产包、全局包的区别以及安装语法

目录 开发包 (devDependencies) 安装方法 生产包 (dependencies) 安装方法 全局包 (Global build) 安装方法 vue中有三种不同类型的包:开发包 (Development build),生产包 (Production build) 和全局包 (Global build)。下面我们分别解释它们的区别…

EVE-NG 平台搭建以及发布“Ruijieroute”“Ruijieswitch”

下载相关资源 1、锐捷模拟器镜像文件:锐捷镜像官方下载链接 2、VMware虚拟化平台:可以是VMware vSphere、也可以是VMware Workstation:VMware Workstation Pro官方下载链接 当然,我们也可以使用其他虚拟化平台:Orac…

什么,你还在用 momentJs 处理相对时间

我想&#xff0c;下面这段代码&#xff0c;你是不是在开发中常常这样使用来计算距离现在过去了多长时间&#xff1a; import moment from moment // 61k (gzipped:19.k) function Relative(props) {const timeString moment(props.date).fromNow()return <>{timeString…

Tomcat实现ThreadPoolExecutor和JDK线程池区别

1.1 tomcat线程池和juc线程池流程 jdk 线程池策略&#xff1a; 当线程池中线程数量小于 corePoolSize&#xff0c;每来一个任务&#xff0c;就会创建一个线程执行这个任务当前线程池线程数量大于等于 corePoolSize&#xff0c;则每来一个任务&#xff0c;会尝试将其添加到任务…

深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&#…

【CSS---定位基础篇】

CSS---定位基础篇 CSS-----基础定位:一 、 学习定位原因&#xff1a;&#xff08;定位的作用&#xff09;二 、定位组成&#xff1a;2.1 四种定位模式&#xff1a;&#xff08;1&#xff09;静态定位&#xff08;了解&#xff09;&#xff1a;&#xff08;2&#xff09;相对定位…

8.1 正弦波振荡电路(1)

正弦波振荡电路是在没有外加输入信号的情况下&#xff0c;依靠电路自激振荡而产生正弦波输出电压的电路。它广泛地应用于测量、遥控、通讯、自动控制、热处理和超声波电焊等加工设备之中&#xff0c;也作为模拟电子电路的测试信号。 一、概述、 1、产生正弦波振荡的条件 在负…

“不擅长开发,所以选择测试”,软件测试面试时这么说就凉了...

见过不少软件测试岗位&#xff0c;在面试时&#xff0c;问到选择软件测试作为职业的原因时 有不少测试工程师会回答&#xff1a;因为不擅长或不喜欢开发的工作。 这个想法&#xff0c;这个回答&#xff0c;就已经在面试官眼里打低分了。 现在网上也有不少类似观点 “不喜欢开…

TiDB亿级数据亚秒响应查询将MySql数据同步到TiDB

目录 1 MySQL环境准备1.1 MySQL测试数据库1.1.1 导入数据1.1.2 验证是否成功 2 DM数据迁移2.1 TiUP DM 组件简介2.1.1 基本功能2.1.2 使用限制 2.2 TiUP安装 DM组件2.2.1 安装TiUP DM 组件2.2.2 更新 TiUP DM 组件 2.3 TiUP部署 DM组件2.3.1 编辑初始化配置2.3.2 部署命令格式2…

PID算法:增量式PID 位置式PID

前面的文章已经介绍过什么是pid了&#xff0c;现在再回顾一下&#xff1a; PID&#xff1a;是过程控制中常用的一种针对某个对象或者参数进行自动控制的一种算法。 这一篇分享不打算再深究pid的理论知识&#xff0c;如果有不懂或者对pid感兴趣的朋友&#xff0c;可以自行查阅资…

【docker桌面版】windows使用docker搭建nginx

1.拉取nginx镜像 docker pull nginx 2.运行容器 docker run -d -p 80:8081 --name nginx nginx 3.本地磁盘创建nginx目录 D:\Docker\project\nginx 4.复制docker中的nginx配置文件 查看运行的容器docker ps -a docker cp 8f18d58bc77b:/etc/nginx/nginx.conf D:\Docker…