Java中的字符串类型——String

字符串类型

  • 不可变类型:一旦创建,值就不会改变
  • fianl修饰类不能继承,不能被重写,修饰char类型后,地址不可变,内容可变,没有具体方法修改内容,保证不可变性

常用方法

  • 长度: int length = str1.length(); // 获取字符串长度
  • 拼接:
    • String str4 = str1.concat(", World!"); // 使用 concat 方法
    • String str3 = str1 + ", World!"; // 使用 + 运算符
  • 子串: String subStr = str1.substring(0, 5); // 获取子串 "Hello"
  • 查找:
    • int index = str1.indexOf('o'); // 查找字符 'o' 的位置
    • int lastIndex = str1.lastIndexOf('o'); // 查找字符 'o' 的最后一次出现的位置
  • 比较:
    • boolean isEqual = str1.equals(str2); // 比较两个字符串是否相等
    • int compareResult = str1.compareTo(str2); // 按字典顺序比较两个字符串
  • 大小写转换:
    • String upperStr = str1.toUpperCase(); // 转换为大写
    • String lowerStr = str1.toLowerCase(); // 转换为小写
  • 去除空格: String trimmedStr = str1.trim(); // 去除字符串两端的空格
  • 替换: String replacedStr = str1.replace('H', 'J'); // 将 'H' 替换为 'J'

字符串池

为了优化性能,Java 在内存中维护了一个字符串池。当使用字符串字面值创建字符串时,Java 会先检查池中是否存在相同的字符串,如果存在则返回池中的字符串对象,而不会创建新的对象。这使得相同的字符串字面值在内存中只有一个副本。

String str1 = "Hello"; 
String str2 = "Hello"; 
boolean isSame = (str1 == str2); // true,str1 和 str2 引用同一个字符串池中的对象

提升字符串拼接效率的类

  • StringBuffer:StringBuffer 是线程安全的可变字符串类。它的所有方法都是同步的(synchronized),这意味着在多线程环境中使用 StringBuffer 是安全的,但这也导致了其性能比StringBuilder 略低。
  • StringBuilder:StringBuilder 是非线程安全的可变字符串类。它的设计与 StringBuffer 类似,但不保证线程安全。因此,在单线程环境中,StringBuilder 比 StringBuffer 更快。

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

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

相关文章

(十七)原生js案例之h5中的几个特性记录

h5 中的新特性 语义化标签增强型表单元素选择器 querySelectorquerySelectorAllgetElementsByClassName class 的操作 classList.addclassList.removeclassList.toggleclassList.containsclassList.replace JSON JSON.stringifyJSON.parseeval 可以解析任何字符串变成 jspares…

配置Linux客户端免密登录服务端Linux主机的root用户

1.安装shh服务 首先安装shh服务,redhat端通过下面代码进行安装服务 sudo yum install sshd sudo yum install openssh-server 2.生成密钥(公钥+私钥) 执行ssh-keygen命令,会生成id_rsa(私钥&#xff0…

【ffmpeg命令入门】再论ffmpeg通用选项

文章目录 前言强制使用特定的文件格式1. 将 MP4 文件转换为 AVI 格式2. 录制音频3. 从摄像头录制视频 指定输入文件覆盖同名文件限制输入/输出文件的时间指定结束点时间主要区别举例说明1. 使用 -t 截取前 10 秒的视频2. 使用 -to 截取到第 10 秒的视频 实际应用中的区别1. 从第…

并发编程--synchronized介绍

1.初步认识synchronized 先来看下利用 synchronized 实现 同步的基 础 : Java 中的每一个 对 象都可以作 为锁 。具体表 现 为 以下 3 种形式。 : 对于普通同步方法, 锁 是当前 实 例 对 象。 对于静 态 同步方法, 锁 是当前 类…

python-首字母移位(PythonTip)

[题目描述] 编写一个程序,将句子中每个单词的首字母移位到下一个单词。定义函数shift_first_letter(),参数为sentence(字符串)。在函数内,将句子中每个单词的首字母移位到下一个单词。最后一个单词的首字母移位到句子的…

python进阶---闭包与装饰器

一、闭包 在Python中,闭包是指一个函数内部定义的函数,这个内部函数可以访问并修改其外部函数的局部变量,即使外部函数已经执行完毕。闭包可以通过多层函数嵌套来实现。 闭包的三要素: 1、外部函数嵌套内部函数 2、外部函数返回内…

SQL 注入漏洞详解 - Union 注入

1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,…

罗技 F710 无线游戏手柄用户指南

罗技 F710 无线游戏手柄用户指南 Gamepad F710功能系统XInput 游戏DirectInput的 游戏1.左键/触发器按钮为数字; 触发器是模拟的按钮和触发器是数字的和可编程的*2.右键/触发器按钮为数字; 触发器是模拟的按钮和触发器是数字的和可编程的*3.方向键8 向方…

记录|C#+winform创建扁平化风格界面

本项目的C#内容是自己跟做的,自己做的内容已经打包,可以通过自己跟做写的Dashboard界面,C#下的winform模式下载获得,但是需要花费3个积分 目录 前言一、左边设置和步骤界面步骤Step1.Step2.Step3.Step4Step5 二、右边属性和步骤属…

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身&a…

Django已经登录但是还是提示登录

问题描述 在使用 Django 开发网站时,你可能会遇到一个问题:当用户在访问网站时,如果 URL 从 https://200sm.com/chat/ 切换到 https://www.200sm.com/chat/,用户可能会被要求重新登录或遇到其他验证问题。这是因为 Django 默认情…

Python怎样读取URL生成PDF

1. 安装依赖的exe 需要在这个网址,安装一个exe包,地址:https://wkhtmltopdf.org/ 进入网址后,点这个位置: 选择一个你的操作系统的下载链接: 安装后的exe文件: C:\Program Files\wkhtmltopdf…

vue3.2使用@wangeditor/editor-for-vue实现富文本编辑器,后端使用thinkphp上传图片

Vue 组件代码 npm i wangeditor/editor-for-vue<template><div style"border: 1px solid #ccc;height:600px;"><Toolbar style"border-bottom: 1px solid #ccc" :editor"editorRef" :defaultConfig"toolbarConfig" :m…

记录解决springboot项目上传图片到本地,在html里不能回显的问题

项目场景&#xff1a; 项目场景&#xff1a;在我的博客系统里&#xff1a;有个相册模块&#xff1a;需要把图片上传到项目里&#xff0c;在html页面上显示 解决方案 1.建一个文件夹 例如在windows系统下。可以在项目根目录下建个photos文件夹&#xff0c;把上传的图片文件…

n9.Nginx 自定义访问日志

Nginx 自定义访问日志 访问日志是记录客户端即用户的具体请求内容信息&#xff0c;而在全局配置模块中的error_log是记录nginx服务 器运行时的日志保存路径和记录日志的level&#xff0c;因此两者是不同的&#xff0c;而且Nginx的错误日志一般只有一 个&#xff0c;但是访问日…

【Pytorch实用教程】pytorch中random_split用法的详细介绍

在 PyTorch 中,torch.utils.data.random_split 是一个非常有用的函数,用于将数据集随机分割成多个子集。这在机器学习和深度学习中非常常见,特别是当你需要将数据集分割成训练集和测试集或验证集时。这里是 random_split 的详细用法介绍: 功能 random_split 用于随机地将…

java面试-场景题

一、集合 1. java中如何给一个超大的一个亿左右的list数据去重&#xff1f; 我当时的回答是使用HashSet或Stream流的distinct语法。但是面试官好像更注重内存的消耗问题。 使用HashSet&#xff1a; HashSet 是一个不允许有重复元素的集合。你可以将List中的元素添加到HashSe…

华为OD2024D卷机试题汇总,含D量50%+,按算法分类刷题,事半功倍

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

虚拟机固定配置IP

在Hyper-V中&#xff0c;vEthernet (Default Switch) 是Hyper-V自带的默认虚拟交换机&#xff0c;它允许虚拟机直接连接到宿主机网络或外部网络。这个虚拟交换机可以通过Hyper-V管理器或PowerShell等工具进行管理和配置。以下是具体的操作步骤&#xff1a; 一、通过Hyper-V管理…

SAP 贷项销售订单简介

SAP 贷项销售订单简介 1. 什么是销售贷方销售订单?2. 创建销售贷方销售订单的场景3. 销售贷方销售订单的创建流程直接创建发票---VF01将会计凭证过账到会计核算查看贷项销售订单凭证流查看客户明细---FBL5N贷项后台配置SAP销售贷方销售订单(Sales Credit Memo Request)是销售…