JAVA基础-String StringBuffer 和 StringBuilder 类(9)

news2024/11/17 7:20:09

目录

  • String
    • 创建字符串
    • 字符串长度
    • 连接字符串
    • 创建格式化字符串
    • String 方法
  • **StringBuilder**
  • StringBuffer

String

创建字符串

String s1 = "Runoob";              // String 直接创建
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

image.png

字符串长度

用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数

public class StringDemo {
    public static void main(String args[]) {
        String site = "www.runoob.com";
        int len = site.length();
        System.out.println( "菜鸟教程网址长度 : " + len );
   }
}

String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。

连接字符串

String 类提供了连接两个字符串的方法:

返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法,如:
:::tips
"我的名字是 “.concat(“Runoob”);
:::
更常用的是使用’+'操作符来连接字符串,如:
:::tips
“Hello,” + " runoob” + “!”
:::

创建格式化字符串

我们知道输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

System.out.printf("浮点型变量的值为 " +
                  "%f, 整型变量的值为 " +
                  " %d, 字符串变量的值为 " +
                  "is %s", floatVar, intVar, stringVar);

String 方法

下面是 String 类支持的方法,更多详细,参看 Java String API 文档:

SN(序号)方法描述
2int compareTo(Object o)
把这个字符串和另一个对象比较。
3int compareTo(String anotherString)
按字典顺序比较两个字符串。
9boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
10boolean equals(Object anObject)
将此字符串与指定的对象比较。
11boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
12byte[] getBytes()

使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
| 15 | int hashCode()
返回此字符串的哈希码。 |
| 16 | int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。 |
| 17 | int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
| 18 | int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。 |
| 19 | int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
| 25 | int length()
返回此字符串的长度。 |
| 29 | String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
| 32 | String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。 |
| 33 | String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。 |
| 34 | boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。 |
| 35 | boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
| 37 | String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。 |
| 38 | String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。 |
| 39 | char[] toCharArray()
将此字符串转换为一个新的字符数组。 |
| 40 | String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
| 41 | String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
| 42 | String toString()
返回此对象本身(它已经是一个字符串!)。 |
| 43 | String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
| 44 | String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
| 45 | String trim()
返回字符串的副本,忽略前导空白和尾部空白。 |
| 47 | contains(CharSequence chars)
判断是否包含指定的字符系列。 |
| 48 | isEmpty()
判断字符串是否为空。 |

StringBuilder

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

image.png

在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

public class RunoobTest{
    public static void main(String args[]){
        StringBuilder sb = new StringBuilder(10);
        sb.append("Runoob..");
        System.out.println(sb);  
        sb.append("!");
        System.out.println(sb); 
        sb.insert(8, "Java");
        System.out.println(sb); 
        sb.delete(5,8);
        System.out.println(sb);  
    }
}

image.png

Runoob…
Runoob…!
Runoob…Java!
RunooJava!

StringBuffer

以下是 StringBuffer 类支持的主要方法:

序号方法描述
1public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2public StringBuffer reverse()
将此字符序列用其反转形式取代。
3public delete(int start, int end)
移除此序列的子字符串中的字符。
4public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。
5insert(int offset, String str)
将 str 参数的字符串插入此序列中。
6replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。

更多内容:

  • StringBuffer 类:https://www.runoob.com/manual/jdk11api/java.base/java/lang/StringBuffer.html
  • StringBuilder 类:https://www.runoob.com/manual/jdk11api/java.base/java/lang/StringBuilder.html

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

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

相关文章

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理

目录 内存管理概念 内存的基础知识 什么是内存?有何作用? 补充知识:几个常用的数量单位 指令的工作原理 三种装入方式 绝对装入 可重定位装入 动态重定位 从写程序到程序运行 链接的三种方式 总结 内存管理的概念 内存保护 内存空间的扩充 覆盖技…

创新智能环境带来无线通信与感知的新视角

编者按:2023年是微软亚洲研究院建院25周年。25年来,微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式,并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来,微软亚洲研究院致力于创造具有…

【java零基础入门到就业】第三天:HelloWorld程序的常见问题和java环境变量的配置

1、java编写程序的常见问题 1.1、 BUG的由来 BUG的由来: "Bug"一词最初是用来形容计算机系统中的硬件故障或软件错误的。据说这个词最早出现在1947年,由于一只飞蛾飞进了哈佛大学的马克Ⅱ计算机中,导致计算机出现故障。后来&#…

仿第八区2023年app免签封装/苹果签名/分发平台系统

描述 封装应用程序直接通过访问数据来操作,直接像网页直接打开一样被访问,这与h5连接访问相同,所以封装应用程序的大部分也在网页端被h5系统封装,从而控制了网页访问手机的硬件参数和手机的权限控制。封装app基本上是以h5页面的格…

(零基础学习)Neo4j+Spring boot 自行定义属性

前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如String,int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…

建筑模板的厚度对价格有多大影响?

建筑模板的厚度对价格有一定的影响,以下是关于建筑模板厚度对价格影响的一些信息: 1. 厚度与价格的关系: - 建筑模板的厚度越大,通常价格也会相应增加。这是因为生产厚度较大的模板需要更多的原材料和工艺成本。 - 厚度较薄的建筑…

Virtualbox Manjaro kde虚拟机系统闪烁

过程 https://blog.csdn.net/weixin_44220976/article/details/133954801 有次更新了Manjaro虚拟机系统之后发生闪烁 • 不操作不闪烁 • 鼠标光标悬浮到桌面的文件、文件夹上,所有文件、文件夹图标消失,变成: 只有悬浮位置有个半透明的框 …

股票价格预测 | Python实现基于LSTM的股票预测模型(keras)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 今儿举一个案例,围绕 LSTM(Long Short-Term Memory)神经网络的原理,展示如何使用Python和深度学习库Keras构建LSTM模型,以及如何使用这个模型来预测时间序列数据。 以股票价格预测为例,这是LSTM在金…

LABVIEW 安装教程(超详细)

目录 LabVIEW2017(32/64位)下载地址: 一 .简介 二.安装步骤: LabVIEW2017(32/64位)下载地址: 链接: https://pan.baidu.com/s/1eSGB_3ygLNeWpnmGAoSwcQ 密码:gjrk …

DataX-web安装部署和使用

DataX-web的环境准备 MySQL (5.5) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 JDK (1.8.0_xxx) 必选 DataX 必选 Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在do…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多,在以前线下店是学生、学者们经常去的场所,每到周末人流不绝,但随着互联网发展以及客户消费升级,如今线下书店人流量非常少,除了头部品牌可以支撑外,中小品牌几乎很难生存。 同时加之…

智慧公厕:打造无人值守的公共厕所运营管理服务

智慧公厕是在"厕所革命"的背景下产生的物联网应用解决方案,结合物联网高精尖技术的中期科技智慧厕所,是智慧城市公共厕所应用解决方案的代表。它提供了一系列监测应用功能,包括监测公厕内部人体活动状态、人体存在状态、空气质量情…

【论文笔记】Far3D: Expanding the Horizon for Surround-view 3D Object Detection

原文链接:https://arxiv.org/pdf/2308.09616.pdf 1. 引言 目前的环视图图像3D目标检测方法分为基于密集BEV的方法和基于稀疏查询的方法。前者需要较高的计算量,难以扩展到长距离检测。后者全局固定的查询不能适应动态场景,通常会丢失远距离…

进阶课1——声纹识别

声纹识别是一种生物识别技术,也称为说话人识别,包括说话人辨认和说话人确认两种技术。该技术通过将声信号转换成电信号,再使用计算机进行识别,不同的任务和应用会使用不同的声纹识别技术,例如在缩小刑侦范围时可能需要…

如何使用积分系统增强用户留存?会员积分体系建设方式介绍

为什么别人家的积分系统能够成功吸引并维护10万个忠实粉丝,而你的积分系统却鲜有人问津?本文将详细解释积分系统如何与会员体系相互关联,以激发会员的复购和升级行为。 想要做好用户留存,互动交流是至关重要的一部分。企业需要灵…

Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)

案例:求1~100之间,所有偶数的和 思考: 先套用原有基础模式,之后再思考其他的。 其实就是在之前文章 Python--练习:使用while循环求1..100的和-CSDN博客 的基础上,再判断如果获取到里面的全部偶数&#…

前端时间分片渲染

在经典的面试题中&#xff1a;”如果后端返回了十万条数据要你插入到页面中&#xff0c;你会怎么处理&#xff1f;” 除了像 useVirtualList 这样的虚拟列表来处理外&#xff0c;我们还可以通过 时间分片 来处理 通过 setTimeout 直接上一个例子&#xff1a; <!--* Auth…

苹果遭双重暴击,品控翻车致iPhone15价格暴跌千元,比iPhone14更便宜

苹果近期可谓屋漏偏逢连夜雨&#xff0c;上市销售才不到一个月&#xff0c;就在中国市场被国产5G手机击败&#xff0c;日前第三方渠道对iPhone15的报价也持续下跌&#xff0c;其中iPhone15plus更是下跌超千元&#xff0c;显示出iPhone15似乎真的卖不动了。 据第三方渠道的报价显…

面试官:如何理解CDN?说说实现原理?

一、是什么 CDN (全称 Content Delivery Network)&#xff0c;即内容分发网络 构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降…

51系列—基于51单片机的电子万年历设计

本文主要介绍基于51单片机的电子万年历设计 前言 电子万年历是单片机系统的一个应用&#xff0c;由硬件和软件相配合使用。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。主控模块用AT89C52、时钟电路用时钟芯片DS1302、显示模块用LED数码管、温度检…