当前位置: 首页 > news >正文

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中两个引用遍历是不能用" "号来比较的&#xff0c;而String类重写了父类objects的equals方法&#xff0c; 实现了引用类型的比较 例子 import java.util.Scanner; public class Main { public static void…...

es终止快照恢复进程的方法

方法1、删除索引可以终止&#xff0c;恢复进程。 DELETE index_* // 按通配符删除以index_开头的索引 DELETE _all // 删除全部索引 POST *,-.*/_close 关闭索引 POST *,-.*/_open 打开索引 DELETE *,-.* 删除全部索引方法2、强制重启es 集群也可也终…...

ubantu安装rabbbitmq

ubantu安装rabbbitmq 安装Erlang1、在linux下直接安装2、上传Erlang文件后解压 安装rabbitmq开启web管理接口创建用户及修改guest密码&#xff0c;删除guest默认账号 安装Erlang 1、在linux下直接安装 #运行以下命令直接安装&#xff1a; sudo apt-get install erlang#可运行…...

了解 条码工具 Dynamsoft 在条码读取器中的形态运算

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

NIO和NIO.2对比

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

Google准备好了吗?OpenAI发布ChatGPT驱动搜索引擎|TodayAI

在科技界波澜壮阔的发展中&#xff0c;OpenAI正式宣布其最新突破——一个全新的基于ChatGPT技术的搜索引擎&#xff0c;旨在直接挑战谷歌在搜索领域的统治地位。这一创新将可能彻底改变用户上网搜索的方式。 据悉&#xff0c;这款AI驱动的搜索引擎利用了ChatGPT的强大功能&…...

乐观锁、悲观锁、互斥锁、读写锁

乐观锁和悲观锁是两种不同的锁机制&#xff0c;用于在多线程环境下解决资源竞争问题。互斥锁和读写锁是两种常见的锁类型&#xff0c;它们都可以用来实现乐观锁或悲观锁。 乐观锁 是一种无锁机制&#xff0c;它假设在多线程环境下对共享资源的操作不会发生冲突&#xff0c;因…...

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&#xff08;类&#xff09; 定义和作用 Scala 中的 class 是一种蓝图&#xff0c;用于创建对象&#xff08;实例&#xff09;。它定义了对象的状态和行为。类可以包含字段&#xff08;属性&#xff09;和方法&#xff08;函数&#xff09;。类可以有构造器&#xff0c;…...

移动端自动化测试工具 Appium 之 main 启动

文章目录 一、背景二、生成xml文件2.1、创建xml方法2.2、执行主类MainTest2.3、自动生成的xml2.4、工程目录2.5、执行结果 三、命令行执行appium服务四、主方法启动类五、集成Jenkins六、总结 一、背景 Jenkins 做集成测试是不错的工具&#xff0c;那么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数组&#xff0c;你需要在Java中准备一个相应的二维数组来接收这个返回值。在JNI层面&#xff0c;你可以创建一个二维的byte数组&#xff0c;并使用GetByteArrayRegion和SetByteArrayRegion来操作它。 以下是一个简单的例子&#xff1a; public class Jni…...

“webpack-dev-server --config build/webpack.dev.conf.js” 请问这个问题要如何修复

解决方案 修改部署方式&#xff1a; 使用 webpack 来打包你的项目&#xff0c;生成静态文件。在生产环境中&#xff0c;使用 Nginx 或其他 HTTP 服务器来提供服务&#xff0c;而不是使用 webpack-dev-server。 Dockerfile 调整&#xff1a; 确保 Dockerfile 中使用的命令是用于…...

TOOL使用fiddler导出的har文件导入到postman测试接口

在fiddler操作 export → File → Export Sessions → alls-->http arch v1.1 导出的har文件直接拖入到浏览器的调试工具中&#xff0c; 然后复制为curl&#xff0c;导入到postman中即可&#xff01;...

第十三届蓝桥杯决赛(国赛)真题 Java A 组【原卷】

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

数据结构_顺序表中基本操作的实现_代码

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

提升SEO排名!SSL证书对SEO效果的积极影响

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

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…...

Vue + Vite + Axios 项目多环境以及部署前后端跨域

最近在前端多环境和部署服务器之后出现的跨域的问题。 多环境 前端多环境 Vite Axios 1.首先在项目目录下定义多环境的文件。 这里列举开发环境和发布环境 .env.development 环境 # 开发时加载// 此处为开发时接口 VITE_API_URL http://localhost:8080/api.env producti…...

Nginx+GateWay

目录 Nginx nginx如何配置负载均衡 负载均衡有哪些策略 1、轮询&#xff08;默认&#xff09; 2、指定权重 3、ip_hash&#xff08;客户端ip绑定&#xff09; 4、least_conn&#xff08;最少连接&#xff09; 5、fair 6、url_hash Nginx为什么效率高 gateway 使用gat…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...