Java之String类
一、String类常用方法
1.引用类型的比较
我们知道在Java中两个引用遍历是不能用" == "号来比较的,而String类重写了父类objects的equals方法, 实现了引用类型的比较
例子
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str1 = "hello world";
String str2 = "hello world";
String str3 = "hello xiao_yu_er";
// equals方法返回值是boolean类型,相等返回true,不等返回false
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // false
}
}
除了equals,String还为我们提供了一些其他的字符串比较方法
compareTo方法:按照字典序进行比较
与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:
1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
例子
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str1 = "hello a";
String str2 = "hello z";
String str3 = "hello anna";
// 返回类型是int,前几个字符都相同,最后一个不同——返回'a'和'z'字符的Ascii码的差值
System.out.println(str1.compareTo(str2)); // -25
// str1所有的字符和str3都相同,但str3多了几个不同的字符,返回值str1和str3两个字符串长度差值
System.out.println(str1.compareTo(str3)); // -3
}
}
compareToIgnoreCase:与compareTo方式相同,但是忽略大小写比较
2.字符串查找方法
方法功能carAt(int index)
返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常
indexOf(String str返回str第一次出现的位置,没有返回-1
lastIndexOf(String str)
从后往前找,返回str第一次出现的位置,没有返回-1
例子
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str1 = "hello world!";
char ch = str1.charAt(0); // 获取0下标的字符
System.out.println("该字符串中0下标的字符为:" + ch);
int index1 = str1.indexOf("l"); // 记录字符串”l“在str1中第一次出现的位置,从前往后找,没有返回-1
System.out.println("从前往后找,字符串”l“第一次出现的位置是:" + index1);
int index2 = str1.lastIndexOf("l"); // 从后往前找,返回“l”第一次出现的位置,没有返回-1
System.out.println("从后往前找,字符串“l”第一次出现的位置是:" + index2);
}
}
3.字符串与数组、数字之间的转换
方法介绍都在代码中:
import java.util.Locale;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 数字和字符串之间的转换
String str1 = String.valueOf(1234); // 将数字1234转换成字符串"1234"
double date1 = Double.parseDouble("76.2"); // 将字符串"76.2"转换成double类型的数字:76.2
System.out.println(str1);
System.out.println(date1);
// 大小写转换
String s1 = "XIAO YU ER";
String s2 = "student";
String s3 = s1.toLowerCase(); // 大写转小写
System.out.println("大写转小写的转换结果是:" + s3);
System.out.println("小写转大写的转换结果是:" + s2.toUpperCase()); // 小写转大写
// 字符串和字符数组之间的转换
String str2 = "hello word";
char[] ch1 = str2.toCharArray(); // 字符串转字符数组
for (char tmp:
ch1) {
System.out.print(tmp + " ");
}
System.out.println("======我是分割线=======");
char[] ch2 = new char[]{'a','b', 'c', 'd', 'e'};
String str3 = new String(ch2); // 字符数组转字符串
System.out.println("字符数组转字符串的转换结果是:" + str3);
}
4. 字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下
方法功能(返回类型是String) replaceAll(String regex, String replacement)替换所有的指定内容(返回类型是String) replaceFirst(String regex, String replacement)替换首个内容
例子
public class String_method_Test {
public static void main(String[] args) {
String str1 = "hello world!";
System.out.println("替换全部的”l“后的结果是:" + str1.replaceAll("l", "*"));
System.out.println("替换掉第一个”l“后的结果是:" + str1.replaceFirst("l", "&"));
}
}
注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串
5.字符串的拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串
方法功能split(String regex) (返回值的类型:String[] )将字符串全部拆分split(String regex, int limit) (返回值的类型:String[] )将字符串以指定的格式,拆分为limit组
例子
public class String_method_Test {
public static void main(String[] args) {
String str1 = "hello xiao yu";
String[] s1 = str1.split(" "); // 以空格,来进行全部拆分
for (String tmp :
s1) {
System.out.println(tmp);
}
System.out.println("=====我是分割线======");
String[] s2 = str1.split(" ", 2); // 按空格,拆分为两组
for (int i = 0; i < s2.length; ++i) {
System.out.println(s2[i]);
}
}
}
拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义.
例子: 拆分IP地址
public class String_method_Test {
public static void main(String[] args) {
String str1 = "127.0.0.1";
String[] s = str1.split("\\."); // 注意一定要加上转义字符
for (int i = 0; i < s.length; ++i) {
System.out.println(s[i]);
}
System.out.println("====我是分割线====");
String str2 = "name=小鱼儿&age=19";
String[] s2 = str2.split("&");
// 多次拆分
for (int i = 0; i < s2.length; ++i) {
String[] tmp = s2[i].split("=");
for (int j = 0; j < tmp.length; ++j) {
System.out.println(tmp[j]);
}
}
}
}
注意事项:
1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\" ,那么就得写成 "\\\\" .
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符
6.字符串截取
从一个完整的字符串之中截取部分内容:
方法功能String substring(int beginIndex)从指定索引截取到结尾String substring(int beginIndex, int endIndex)截取部分内容
例子
public class String_method_Test {
public static void main(String[] args) {
String str1 = "hello xiaoyu";
// 从指定索引截取到结尾
String s1 = str1.substring(6);
System.out.println(s1);
// 截取部分内容
String s2 = str1.substring(6, 10);
System.out.println(s2);
}
}
注意事项:
1. 索引从0开始
2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标
其他一些操作方法
方法功能String trim()去掉字符串中的左右空格,保留中间空格String toUpperCase()字符串转大写String toLowerCase()字符串转小写
trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)
相关文章:
Java之String类
一、String类常用方法 1.引用类型的比较 我们知道在Java中两个引用遍历是不能用" "号来比较的,而String类重写了父类objects的equals方法, 实现了引用类型的比较 例子 import java.util.Scanner; public class Main { public static void…...
es终止快照恢复进程的方法
方法1、删除索引可以终止,恢复进程。 DELETE index_* // 按通配符删除以index_开头的索引 DELETE _all // 删除全部索引 POST *,-.*/_close 关闭索引 POST *,-.*/_open 打开索引 DELETE *,-.* 删除全部索引方法2、强制重启es 集群也可也终…...
ubantu安装rabbbitmq
ubantu安装rabbbitmq 安装Erlang1、在linux下直接安装2、上传Erlang文件后解压 安装rabbitmq开启web管理接口创建用户及修改guest密码,删除guest默认账号 安装Erlang 1、在linux下直接安装 #运行以下命令直接安装: sudo apt-get install erlang#可运行…...

了解 条码工具 Dynamsoft 在条码读取器中的形态运算
在图像处理中,术语形态学是指分析形状以填充小孔、去除噪声、提取轮廓等的一组操作。形态学操作很像空间卷积中的过滤过程。有两个部分在起作用:结构元素和预定义的计算规则。 点击下载Dynamsoft最新版https://www.evget.com/product/3691/download 结…...

NIO和NIO.2对比
Java NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API,用于替代原来的BIO(Blocking I/O)API。NIO提供了更加灵活和高效的网络通信方式,特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式,它…...

Google准备好了吗?OpenAI发布ChatGPT驱动搜索引擎|TodayAI
在科技界波澜壮阔的发展中,OpenAI正式宣布其最新突破——一个全新的基于ChatGPT技术的搜索引擎,旨在直接挑战谷歌在搜索领域的统治地位。这一创新将可能彻底改变用户上网搜索的方式。 据悉,这款AI驱动的搜索引擎利用了ChatGPT的强大功能&…...
乐观锁、悲观锁、互斥锁、读写锁
乐观锁和悲观锁是两种不同的锁机制,用于在多线程环境下解决资源竞争问题。互斥锁和读写锁是两种常见的锁类型,它们都可以用来实现乐观锁或悲观锁。 乐观锁 是一种无锁机制,它假设在多线程环境下对共享资源的操作不会发生冲突,因…...

Gin入门指南:从零开始快速掌握Go Web框架Gin
官网:https://gin-gonic.com/ GitHub:https://github.com/gin-gonic 了解 Gin Gin 是一个使用 Go 语言开发的 Web 框架,它非常轻量级且具有高性能。Gin 提供了快速构建 Web 应用程序所需的基本功能和丰富的中间件支持。 以下是 Gin 框架的一些特点和功能: 快速而高效:…...
Scala里的class、object、case class、case object 、trait
Class(类) 定义和作用 Scala 中的 class 是一种蓝图,用于创建对象(实例)。它定义了对象的状态和行为。类可以包含字段(属性)和方法(函数)。类可以有构造器,…...

移动端自动化测试工具 Appium 之 main 启动
文章目录 一、背景二、生成xml文件2.1、创建xml方法2.2、执行主类MainTest2.3、自动生成的xml2.4、工程目录2.5、执行结果 三、命令行执行appium服务四、主方法启动类五、集成Jenkins六、总结 一、背景 Jenkins 做集成测试是不错的工具,那么UI自动化是否可以&#…...

WT32-ETH01作为TCP Client进行通讯
目录 模块简介WT32-ETH01作为TCP Client设置电脑作为TCP Server设置连接并进行通讯总结 模块简介 WT32-ETH01网关主要功能特点: 采用双核Xtensa⑧32-bit LX6 MCU.集成SPI flash 32Mbit\ SRAM 520KB 支持TCP Server. TCP Client, UDP Server. UDP Client工作模式 支持串口、wif…...
jni 返回二维byte数组
在JNI中返回二维byte数组,你需要在Java中准备一个相应的二维数组来接收这个返回值。在JNI层面,你可以创建一个二维的byte数组,并使用GetByteArrayRegion和SetByteArrayRegion来操作它。 以下是一个简单的例子: public class Jni…...
“webpack-dev-server --config build/webpack.dev.conf.js” 请问这个问题要如何修复
解决方案 修改部署方式: 使用 webpack 来打包你的项目,生成静态文件。在生产环境中,使用 Nginx 或其他 HTTP 服务器来提供服务,而不是使用 webpack-dev-server。 Dockerfile 调整: 确保 Dockerfile 中使用的命令是用于…...

TOOL使用fiddler导出的har文件导入到postman测试接口
在fiddler操作 export → File → Export Sessions → alls-->http arch v1.1 导出的har文件直接拖入到浏览器的调试工具中, 然后复制为curl,导入到postman中即可!...

第十三届蓝桥杯决赛(国赛)真题 Java A 组【原卷】
文章目录 发现宝藏【考生须知】试题 A: 火柴棒数字试题 B: 小蓝与钥匙试题 C: 内存空间试题 D: 斐波那契数组试题 E: 交通信号试题 F: 数组个数试题 G: 六六大顺试题 H : \mathrm{H}: H: 选素数试题 I: 图书借阅试题 J \mathrm{J} J : 括号序列树 发现宝藏 前些天发现了一个…...

数据结构_顺序表中基本操作的实现_代码
学习笔记,仅供参考 1.头文件 2.初始化 3.增加值 4.根据下标取值 5.查找 6.插入 7.删除 8.动态增加数组的长度 9.所有代码 10.运行结果 1.头文件 //顺序表的实现——动态分配 #include<stdio.h> #include<stdlib.h> #define InitSize 10 type…...

提升SEO排名!SSL证书对SEO效果的积极影响
搜索引擎优化(SEO)作为提升网站可见度和吸引有机流量的关键策略,其规则与标准也在不断进化以适应这些变化。其中,安装SSL证书对SEO效果产生的正面影响尤为显著。以下是关于安装SSL证书如何促进SEO效果的详细分析。 一、搜索引擎的…...

JAVA 项目<果园之窗>_完结
目录 1、前言:2、视频展示:3、环境配置:4、工程代码:5、原理:6、原理补充:7、综上: 1、前言: 因为没有足够的时间这个项目用的是别人搭好的框架,在此基础上做调整并根据前…...
Vue + Vite + Axios 项目多环境以及部署前后端跨域
最近在前端多环境和部署服务器之后出现的跨域的问题。 多环境 前端多环境 Vite Axios 1.首先在项目目录下定义多环境的文件。 这里列举开发环境和发布环境 .env.development 环境 # 开发时加载// 此处为开发时接口 VITE_API_URL http://localhost:8080/api.env producti…...

Nginx+GateWay
目录 Nginx nginx如何配置负载均衡 负载均衡有哪些策略 1、轮询(默认) 2、指定权重 3、ip_hash(客户端ip绑定) 4、least_conn(最少连接) 5、fair 6、url_hash Nginx为什么效率高 gateway 使用gat…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...