Java基础06——字符串

news2025/1/21 18:02:43

Java基础06——字符串

  • 一、String
    • 1. 字符串特点
    • 2. 创建字符串对象的两种方式
      • 直接赋值
      • new
    • 3. 字符串常用方法
      • a. 比较
      • b. 遍历
      • c. 截取
      • d. 替换
  • 二、StringBuilder
    • 1. StringBuilder概述
    • 2. StringBuilder构造方法
    • 3. StringBuilder常用方法
  • 三、StringJoiner
    • 1. StringJoiner概述
    • 2. StringJoiner构造方法
    • 3. StringJoiner常用方法
  • 四、字符串原理
    • 1. 字符串存储的内存原理
    • 2. ==号比较的是什么
    • 3. 字符串拼接的底层原理
    • 4. StringBuiler提高效率原理
    • 5. StringBuilder扩容机制

一、String

1. 字符串特点

  • String是Java定义好的一个类,定义在java.lang包中,所以使用的时候不需要导包
  • Java程序中的所有字符串文字都为此类的对象
  • 字符串不可变,它们的值在创建后不能被更改

2. 创建字符串对象的两种方式

直接赋值

String name = "abcd"

new

构造方法说明
public String()创建空白字符串,不含任何内容
public String(String original)根据传入的字符串,创建字符串对象
public String(char[] chs)根据字符数组,创建字符串对象
public String(byte[] chs)根据字节数组,创建字符串对象

3. 字符串常用方法

Java字符串训练

a. 比较

  • == 号比的是什么?
    • 基本数据类型:比较的是数据值
    • 引用数据类型:比较的是地址值
  • 字符串比较的方法?
    • 字符串.equals(要比较的字符串),结果完全一样才true,否则为false
    • 字符串.equalsIgnoreCase(要比较的字符串),忽略大小写

b. 遍历

  • String.charAt(index) 根据索引返回字符
  • String.length() 返回此字符串的长度
  • 获取数组长度是属性,获取字符串长度是方法

c. 截取

  • String.substring(beginIndex, endIndex) 截取字符串,包头不包尾,包左不包右。
  • String.substring(beginIndex) 截取字符串到末尾

d. 替换

  • String.replace(旧值, 新值) 返回替换后的字符串

二、StringBuilder

1. StringBuilder概述

  • StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。
  • 作用:提高字符串的操作效率。
  • 打印StringBuilder实例,输出的是属性值,不是地址值。

2. StringBuilder构造方法

方法名说明
StringBuilder()创建一个空白可变字符串对象,不含有任何内容
StringBuilder(String)根据字符串内容,创建可变字符串对象

3. StringBuilder常用方法

方法名说明
append()添加数据,并返回对象本身
reverse()反转容器内的内容
length()返回长度(字符出现的个数)
toString()把StringBuilder转换成String
public class Main {
    public static void main(String[] args) {
        // 创建对象
        StringBuilder sb = new StringBuilder();

        // 添加
        sb.append("abc");

        // 反转
        sb.reverse();
        System.out.println("反转:" + sb);

        // 获取长度
        int len = sb.length();
        System.out.println("长度:" + len);

        // 转换为字符串
        String str = sb.toString();
        System.out.println("字符串:" + str);
    }
}

在这里插入图片描述

三、StringJoiner

1. StringJoiner概述

  • StringJoiner跟StringBuiler一样,也可以看成是一个容器,创建之后里面的内容是可变的。
  • 作用:提高字符串的操作效率,而且代码编写特别简洁。
  • JDK8出现的。

2. StringJoiner构造方法

方法名说明
StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
StringJoiner(间隔符号, 开始符号, 结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

3. StringJoiner常用方法

方法名说明
add()添加数据,并返回对象本身
length()返回长度(字符出现的个数)
toString()把StringJoiner转换成String

四、字符串原理

1. 字符串存储的内存原理

  • 直接赋值会复用字符串常量池中的
  • new出来的不会复用,而是开辟一个新的空间

2. ==号比较的是什么

  • 基本数据类型比较数据值
  • 引用数据类型比较地址值

3. 字符串拼接的底层原理

  • 如果没有变量参与,都是字符串相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
  • 如果有变量参与,会创建新的字符串,浪费内存。

4. StringBuiler提高效率原理

  • 所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存。

5. StringBuilder扩容机制

  • 默认创建一个长度为16的字节数组
  • 添加的内容长度小于16,直接存。添加的内容大于16会扩容(16*2+2=34)
  • 如果扩容到34还不够,就以实际长度为准。

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

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

相关文章

mysqldump binlog增量恢复会导致数据重复

1. mysqldump时间很长,导出第一个表和导出最后一个表的时间可能过去几个小时,如果期间不锁库,使用binlog增量恢复的时候,如果从备份开始的binlog开始恢复,备份期间别的表的改动通过应用binlog日志会再次被应用一次。导…

如何做好舆情管控,TOOM舆情监控服务工作经验总结

网络舆情监测剖析是实时控制网络舆情动态的一项基本工作,也是妥当处置网络有害信息,制定有效宣扬策略,准确引诱舆论导向的主要前提与根据 。接下来简单了解如何做好舆情管控,TOOM舆情监控服务工作经验总结。 一、如何做好舆情管控…

priority_queue 优先级队列(堆) 的模拟实现

目录 一、优先级队列的模板参数列表 二、优先级队列的构造函数(建堆 nlogn) AdjustDown() 向下调整: 建堆的时间复杂度: 三、pop()接口 (堆顶元素的删除: logn) 四、push()接口 &#xff…

算法第九期——DFS(深度优先搜索)对树的应用

树 树是一种特殊的图 。 特点: 若树有n个点,则有n-1条边。树有连通性但没有回路。从一个点出发可以到达任意一个,而且路径是唯一的。树的重心u(最平衡的点): 以树上任意一个结点为根计算它的子树的结点数,如果结点…

1578_AURIX_TC275_MTU中的ECC检测、错误追踪以及运行模式

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) EOV其实是体现了一个错误递增的概念,而且这个是积累到了一定的度。至于具体的规则,其实后面还有更加详细的信息。关于ECC错误纠正使能,相应的处理可能跟…

产品更新!数维图编辑器超10项功能升级

新的一年我们加紧了更新迭代的速度,覆盖数维图三大可视化编辑器产品,超10项功能升级优化。我们将继续保持每天更新的产品升级节奏,满足不同行业用户的更多需求,为用户带来极致的产品使用体验。以下是主要的亮点功能更新汇总&#…

用R语言理解连续性和导数

文章目录微分1 连续性2 求导微分 1 连续性 众所周知微分的几何意义是斜率,然而斜率最初的定义只涉及直线,指的是ykxbykxbykxb中的kkk,而对任意曲线yf(x)yf(x)yf(x)而言,若想谈其斜率,就必须先做出其切线,…

#A. 毛毛虫树

Description给你一棵树希望你找出一条链来,这条链上的点,及这些点直接相连的点,加起来点数尽可能的多FormatInput第一行两个整数N,M,分别表示树中结点个数和树的边数。接下来M行,每行两个整数a, b表示点a和…

lombok快速入门

lombok快速入门 1.安装idea lombok插件 2.加入 maven 依赖 lombok常用注解 1. Getter/Setter 自动产生 getter/setter 2. ToString 自动重写 toString() 方法,会打印出所有变量 3. EqualsAndHashCode 自动生成 equals(Object other) 和 hashcode() 方法&#x…

MATLAB实验四

1.求方程2x5−3x371x2−9x1302x^5-3x^371x^2-9x1302x5−3x371x2−9x130 的全部根 >> p[2 0 -3 71 -9 13]; >> pkg load symbolic >> poly2sym(p) Symbolic pkg v3.0.0: Python communication link active, SymPy v1.10.1. ans (sym)5 3 22*x -…

FPGA图像处理HLS实现sobel边沿检测,提供HLS工程和vivado工程源码

目录一、sobel边沿检测原理二、HLS方案实现sobel边沿检测三、HLS在线仿真并导出IP四、Kintex7开发板vivado工程验证五、zynq7100开发板vivado工程验证六、板级调试验证七、福利:工程源码获取一、sobel边沿检测原理 所谓边缘是指其周围像素灰度急剧变化的那些象素的…

CS架构 企业ERP系统源码 Winform财务设备生产采购进销存源码

淘源码:国内知名的源码免费下载平台 推荐环境:vs2019 sql server 2008 r2以上 源码简介 本系统属于中小型企业ERP管理系统,可以对中小型生产企业或商业企业进行有效管理。 系统包含进销存、财务、生产、委外、财务、设备管理、权限管理等模…

【可解释性机器学习】基于ELI5使用解读LIME算法以及实战案例

LIME算法解读与实战案例LIME论文简介LIME算法原理LIME算法要点LIME的注意事项LIME的代码实现对Pytorch搭建的模型进行解释使用LIME解释Pytorch构建的模型参考资料LIME论文简介 LIME的全称为Local Interpretable Model-agnostic Explanations. 尽管被广泛采用,机器…

模板进阶篇

一、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。如图: 非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可…

Mybatis 原理之启动阶段

文章目录1.MyBatis 核心流程2.启动准备阶段流程3.创建 SQlSessionFactory4.创建XMLConfigBuilder5.创建 XPathParser6.解析并设置 configuration 中的属性7.解析Mappers标签1.MyBatis 核心流程 Mybatis的核心流程氛围两个阶段,启动准备阶段和执行SQL阶段。 加载配…

Day858.高性能网络应用框架Netty -Java 并发编程实战

高性能网络应用框架Netty Hi,我是阿昌,今天学习记录的是关于高性能网络应用框架Netty的内容。 Netty 是一个高性能网络应用框架,应用非常普遍,目前在 Java 领域里,Netty 基本上成为网络程序的标配了。 Netty 框架功…

win10录屏软件哪款比较好用?一款不限时长的录屏软件

现在大部分人的电脑都是win10系统的电脑,也有许多小伙伴会经常会问:“win10电脑怎么录屏?”录制电脑屏幕,需要使用到录屏软件,那win10录屏软件哪款比较好用?小编今天给大家分享一款试用版即可不限录制时长的…

【区间合并】洛谷 P1496 火烧赤壁

P1496 火烧赤壁 文章目录题目背景题目描述输入格式:输出格式:数据范围输入样例输出样例方法:区间合并解题思路代码复杂度分析:题目背景 曹操平定北方以后,公元 208 年,率领大军南下,进攻刘表。…

部分时变离散系统中的稳定性判据

部分时变离散系统中的稳定性判据 1.Lyapunov稳定性理论 下面先给出Lyapunov稳定性的一些基本理论(网上资源较多这里不再过多赘述): 2.一类时变离散系统的稳定性 定理 ​ 对于离散时变系统x(k1)A(k)x(k)x(k1)A(k)x(k)x(k1)A(k)x(k)&#x…

Java EE|多线程代码实例之单例模式与阻塞队列

文章目录前言设计模式介绍🔴单例模式什么是单例模式单例模式实现方式饿汉模式懒汉模式基于上述单例模式实现线程安全问题讨论重点回顾🔴阻塞队列阻塞队列是什么标准库中的阻塞队列典型应用场景:生产者消费者模型利用系统提供的BlockingQueue实…