Java 字符串处理

Java 是一种广泛使用的编程语言,而字符串处理是 Java 编程中非常重要的一部分。Java 提供了丰富的字符串操作功能,通过 String 类和 StringBuilder、StringBuffer 类来处理字符串。

一、Java 字符串的创建

1. 使用字面量

在 Java 中,字符串字面量是最常见的字符串创建方式:

String str = "Hello, World!";

2. 使用 new 关键字

使用 new 关键字创建字符串:

String str = new String("Hello, World!");

虽然这两种方式看似相同,但它们在内存管理上有所不同。字面量方式会将字符串放在字符串池中,而使用 new 关键字则会在堆上创建一个新的字符串对象。

3. 使用字符数组

可以通过字符数组来创建字符串:

char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str = new String(charArray);

二、字符串的操作

1. 连接字符串

使用 + 运算符

最简单的字符串连接方式是使用 + 运算符:

String str1 = "Hello, ";
String str2 = "World!";
String str3 = str1 + str2;  // str3 内容为 "Hello, World!"
使用 concat 方法

concat 方法也可以用来连接字符串:

String str1 = "Hello, ";
String str2 = "World!";
String str3 = str1.concat(str2);  // str3 内容为 "Hello, World!"

2. 字符串比较

使用 equals 方法

equals 方法用于比较两个字符串的内容是否相同:

String str1 = "Hello";
String str2 = "Hello";
boolean isEqual = str1.equals(str2);  // isEqual 为 true
使用 == 运算符

== 运算符比较的是两个字符串对象的引用是否相同:

String str1 = "Hello";
String str2 = new String("Hello");
boolean isSame = (str1 == str2);  // isSame 为 false

3. 查找字符串

使用 indexOf 方法

indexOf 方法返回子字符串在字符串中第一次出现的位置:

String str = "Hello, World!";
int index = str.indexOf("World");  // index 为 7
使用 lastIndexOf 方法

lastIndexOf 方法返回子字符串在字符串中最后一次出现的位置:

String str = "Hello, World! Hello!";
int index = str.lastIndexOf("Hello");  // index 为 14

4. 字符串替换

使用 replace 方法

replace 方法用于将字符串中的某个子字符串替换为另一个字符串:

String str = "Hello, World!";
String newStr = str.replace("World", "Java");  // newStr 内容为 "Hello, Java!"
使用 replaceAll 方法

replaceAll 方法使用正则表达式替换字符串中的所有匹配项:

String str = "Hello, World! Hello!";
String newStr = str.replaceAll("Hello", "Hi");  // newStr 内容为 "Hi, World! Hi!"

5. 字符串分割

使用 split 方法

split 方法使用正则表达式将字符串分割为子字符串数组:

String str = "apple,banana,orange";
String[] fruits = str.split(",");  // fruits 为 ["apple", "banana", "orange"]

6. 字符串子串

使用 substring 方法

substring 方法用于提取字符串中的子字符串:

String str = "Hello, World!";
String subStr = str.substring(7);  // subStr 内容为 "World!"
String subStr2 = str.substring(7, 12);  // subStr2 内容为 "World"

7. 字符串大小写转换

使用 toUpperCasetoLowerCase 方法

toUpperCase 方法将字符串转换为大写,toLowerCase 方法将字符串转换为小写:

String str = "Hello, World!";
String upperStr = str.toUpperCase();  // upperStr 内容为 "HELLO, WORLD!"
String lowerStr = str.toLowerCase();  // lowerStr 内容为 "hello, world!"

8. 去除字符串两端的空格

使用 trim 方法

trim 方法用于去除字符串两端的空格:

String str = "   Hello, World!   ";
String trimmedStr = str.trim();  // trimmedStr 内容为 "Hello, World!"

三、常用的 String 类方法

1. length

length 方法返回字符串的长度:

String str = "Hello, World!";
int length = str.length();  // length 为 13

2. charAt

charAt 方法返回字符串中指定位置的字符:

String str = "Hello, World!";
char ch = str.charAt(7);  // ch 为 'W'

3. contains

contains 方法检查字符串是否包含指定的子字符串:

String str = "Hello, World!";
boolean contains = str.contains("World");  // contains 为 true

4. startsWithendsWith

startsWith 方法检查字符串是否以指定的子字符串开头,endsWith 方法检查字符串是否以指定的子字符串结尾:

String str = "Hello, World!";
boolean starts = str.startsWith("Hello");  // starts 为 true
boolean ends = str.endsWith("World!");  // ends 为 true

5. isEmpty

isEmpty 方法检查字符串是否为空(长度为 0):

String str = "";
boolean isEmpty = str.isEmpty();  // isEmpty 为 true

6. intern

intern 方法将字符串放入字符串池中并返回字符串池中的字符串引用:

String str1 = new String("Hello");
String str2 = str1.intern();
String str3 = "Hello";
boolean isSame = (str2 == str3);  // isSame 为 true

7. format

format 方法使用指定的格式字符串和参数返回一个格式化的字符串:

String name = "Alice";
int age = 25;
String formattedStr = String.format("Name: %s, Age: %d", name, age);  // formattedStr 内容为 "Name: Alice, Age: 25"

8. valueOf

valueOf 方法将其他类型的数据转换为字符串:

int number = 123;
String str = String.valueOf(number);  // str 内容为 "123"

四、StringBuilder 和 StringBuffer

1. StringBuilder

StringBuilder 类用于创建可变的字符串,它不是线程安全的,但效率较高:

StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!");
String result = sb.toString();  // result 内容为 "Hello, World!"

2. StringBuffer

StringBuffer 类也是用于创建可变的字符串,它是线程安全的,但效率较低:

StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!");
String result = sb.toString();  // result 内容为 "Hello, World!"

Java 的字符串处理功能非常强大,通过 String 类和 StringBuilder、StringBuffer 类提供了丰富的方法来创建、操作和管理字符串。理解和掌握这些方法对于提高 Java 编程能力至关重要。

黑马程序员免费预约咨询

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

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

相关文章

应急响应-网页篡改-技术操作只指南

初步判断 网页篡改事件区别于其他安全事件地明显特点是:打开网页后会看到明显异常。 业务系统某部分出现异常字词 网页被篡改后,在业务系统某部分网页可能出现异常字词,例如,出现赌博、色情、某些违法APP推广内容等。2019年4月…

Oracle创建用户时提示ORA-65096:公用用户名或角色名无效

Oracle创建用户时提示“ORA-65096:公用用户名或角色名无效” 如下图所示: 解决方法:在新增用户名前面加上C##或者c##就可以解决无效问题,具体什么原因还不清楚,需要再研究一下。

一机实现All in one,NAS如何玩转虚拟机!

常言道,中年男人玩具有三宝 充电器、路由器、NAS 你问我NAS的魔力在哪里? 一机实现All in one洒洒水啦 那NAS又如何玩转虚拟机呢? 跟我来 0基础也能轻松get! NAS如何玩转虚拟机 铁威马NAS的VirtualBox的简单易用,可虚拟的系统包括Win…

python核心编程(二)

python面向对象 一、基本理论二、 面向对象在python中实践2.1 如何去定义类2.2 通过类创建对象2.3 属性相关2.4 方法相关 三、python对象的生命周期,以及周期方法3.1 概念3.2 监听对象的生命周期 四、面向对象的三大特性4.1 封装4.2 继承4.2.1 概念4.2.1 目的4.2.2 分类4.2.3 t…

cgicc开发(文件上传)

//cgicc文件上传封装 void UploadSoftware() {// 初始化CGIC环境Cgicc cgi;// 获取上传的文件file_iterator fileIter cgi.getFile("button_browse"); //from表单中,输入为文件属性(typefile)的name属性值if (fileIter cgi.getFiles().end()){ #if (DEBUG true)co…

软件设计师中级 重点 笔记

文章目录 下午题目网络DNS域名解析分类:域名协议简介网络设备 算法软件工程实体联系图(E-R图) 其它 下午题目 数据流图补充原则 22年下半年真题 更早-真题大全 答题技巧 网络 DNS域名解析分类: 递归查询的顺序:1.本…

电脑重要文件如何加密保护?教你两种方法

加密是保护电脑重要文件的常见方法,可以有效避免文件数据泄露。那么,电脑重要文件该如何加密保护呢?下面小编就来教你两种方法,帮助你解决文件安全问题。 超级加密3000 超级加密3000是一款专业的电脑数据加密软件,可以…

流量被劫持?不怕,轻松Get 防“窃”技巧!

流量劫持是一种恶意行为,攻击者会在用户访问网站时,将其流量重定向到第三方站点上,导致用户访问的不是原始目标站点。这种行为不仅会影响网站的品牌形象,还会导致用户流失和信息泄露等严重后果。本文将探讨网站如何应对流量劫持。…

SurfaceFinger layer创建过程

SurfaceFinger layer创建过程 引言 本篇博客重点分析app创建Surface时候,SurfaceFlinger是如何构建对应的Layer的主要工作有那些! 这里参考的Android源码是Android 13 aosp! app端创建Surface 其核心流程可以分为如下接部分: app使用w,h,fo…

window.location.search取不到值

window.location.search window.location.search没有值的原因: URL中使用了 hash (指URL中带有#符号),导致URL后面携带的参数被location.hash截取走了,你再使用window.location.search得到的就是空值 打印 window.location 其实…

收银系统源码--零售连锁店铺如何选择适合自己的收银系统?

如果你现在还认为小便利店只要简单的收款,只有大型的连锁便利店才需要收银软件和管理软件,那你就错了,连锁品牌的便利店是必须要用到专业的收银软件,但是小微型的便利店更应该要用专门的软件, 在各行各业逐步革新互联网…

ORCLE删除数据库文件

在实际操作中很少会去删除数据库文件,但是凡事都有例外,由于一些特殊原因,例如存储方式变化、磁盘空间不够等,需要调整和删除一些无效的数据库文件,本文介绍一下实践出来的一种删除数据库文件的操作方式。 删除前请对数…

Linux系统之touch命令的基本使用

Linux系统之touch命令的基本使用 一、touch命令介绍1. touch命令简介2. touch命令作用 二、touch命令帮助1. touch命令的帮助信息2. touch命令的选项解释 三、touch命令的基本使用1. 查看touch工具版本2. 创建空文件3.查看空文件属性4. 修改文件时间戳5. 文件不存在时不创建 四…

概率分布函数与误差函数的关系

正态函数(高斯分布) 对其求[b,x]区间的积分 标准误差函数 以下两个方程相等(a,b取值任意) 两个函数重合 可知正态函数 f(t) 在[b,x]的区间上积分等于 引用desmos计算器:Desmos | Lets learn together.

5.命令行提示符

一、打开终端(有以下几种方式) 1.在搜索框输入 terminal 2.命令 (1)ctrlaltt打开新的终端 (2)ctrlshiftt:在已经打开终端的基础内,新打开一个同路径的终端。 (3&#xf…

一文读懂什么是PaaS平台

如今,数字化概念广为流传,数字化转型的重要性也不言而喻。在转型过程中,企业不仅需要高效地管理业务流程,还需要不断创新和适应市场变化。在这样的背景下,PaaS平台应运而生,成为了企业实现创新、提升效率的…

充电宝哪家好用推荐?买什么充电宝性价比高?2024年充电宝排行榜

说实话,我其实是个手机重度使用者,买过的充电宝也有无数款了,每次手机没电的时候插座都离得不是特别近,不是要下床充电就是要固定在一个位置充电感觉怪麻烦的,但是有了充电宝后可以在床上玩手机都不用担心手机没电&…

1131. 绝对值表达式的最大值

1131. 绝对值表达式的最大值 原题链接:完成情况:解题思路:参考代码:_1131绝对值表达式的最大值 错误经验吸取 原题链接: 1131. 绝对值表达式的最大值 https://leetcode.cn/problems/maximum-of-absolute-value-expr…

机会就在眼前!2025-CISP深圳国际体育展的招展工作火热持续中...

2025-CISP中国(深圳)国际体育展的招展工作火热持续中,凭借越来越深远的影响力以及前两届的成功举办经验,展位多半已被“抢购”。但小编的同事们同时又反映出一个问题:有一批老展商和新展商已有明确的参展意向&#xff…

第十三周 5.27面向对象的三大特性(封装、继承、多态)(三)

3.instanceof避免类型转换异常: (1)语法:引用名 instanceof 类名 (2)执行:判断引用中存储的实际对象类型是否兼容于后面的类型(是否为后面类型的一种),兼容一true,不兼容—false (3)作用:可以在程序设计中避免类型转换异常 直接使用案例…