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…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
C++11 constexpr和字面类型:从入门到精通
文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...
RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
