String 类的运用

目录

1.字符串构造

 2.String对象的比较

2.1==比较是否引用同一个对象

2. 2boolean equals(Object anObject)

2.3int compareTo(String s) 方法: 按照字典序进行比较

2.4int compareToIgnoreCase(String str) 

3.字符串查找

 4.2大小写转换

4.3字符串转数组

 4.4 格式化

5.字符串替换

5.1把字符串中的某个字符替换成指定字符

5.2 把字符串中的某个字符串替换成指定字符串

5.3替换首个内容 

6.字符串拆分

6.1String[] split(String regex)

 6.2String[] split(String regex, int limit)

7 字符串截取

7.1String substring(int beginIndex)

7.2String substring(int beginIndex, int endIndex)

8.String trim()


1.字符串构造

String类提供的构造方式非常多,常用的就以下三种:

(1)使用常量串构造
String str1="wang";
(2)直接 new String 对象
String str3 = new String("123");
(3)使用字符数组进行构造
char arr[]={'a','b','c'};
String str4 = new String(arr);

                                字符串的内存储存图(图1-1)

看下面代码回答运行结果

public class Text {public static void main(String[] args) {char arr[]={'a','b','c'};String str1 = new String(arr,1,2);System.out.println(str1);String str2=new String();System.out.println(str2);String str3 ="";System.out.printf(str3);System.out.println(str3.length());String str4=null;System.out.println(str4);}
}

运行结果:

 

 

但如果强行这串代码

 运行结果:

 

对str3,str4经行解析:


 2.String对象的比较

2.1==比较是否引用同一个对象

String s1 = new String ( "hello" );
String s2 = new String ( "hello" );
String s3 = new String ( "world" );
String s4 = s1 ;
System . out . println ( s1 == s2 ); // false
System . out . println ( s2 == s3 ); // false
System . out . println ( s1 == s4 ); // true

小结:

对于基本类型变量,==比较两个变量中存储的值是否相同,对于引用类型变量,==比较两个引用变量引用的是否为同一个对象

2. 2boolean equals(Object anObject)

方法:按照字典序比较

String s1 = new String ( "hello" );
String s2 = new String ( "hello" );
String s3 = new String ( "wello" );
System . out . println ( s1 . equals ( s2 )); // true
System . out . println ( s1 . equals ( s3 )); // false

解析: 

equals 比较: String 对象中的逐个字符
 虽然 s1 s2 引用的不是同一个对象,但是两个对象中放置的内容相同,因此输出 true s1与 s3 引用的不是同一个对象,而且两个对象中内容也不同,因此输出 false

2.3int compareTo(String s) 方法: 按照字典序进行比较

equals 不同的是, equals 返回的是 boolean 类型,而 compareTo 返回的是 int 类型。
具体比较方式:
1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
String s1 = new String("abc");
String s2 = new String("ac");
String s3 = new String("abc");
String s4 = new String("abcdef");
System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
System.out.println(s1.compareTo(s3)); // 相同输出 0
System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3

2.4int compareToIgnoreCase(String str) 

与compareTo方式相同,但是忽略大小写比较
String s1 = new String ( "abc" );
String s2  = new String ( "ABc" );
System . out . println ( s1 . compareToIgnoreCase ( s2 )); // 相同输出 0

 

3.字符串查找

字符串查找也是字符串中非常常见的操作, String 类提供的常用查找的方法:
方法
功能
char charAt(int index)
返回 index 位置上字符,如果 index 为负数或者越界,抛出 IndexOutOfBoundsException异常
int indexOf(int ch)
返回 ch 第一次出现的位置,没有返回 -1
int indexOf(int ch, int fromIndex)
fromIndex 位置开始找 ch 第一次出现的位置,没有返回 -1
int indexOf(String str)
返回 str 第一次出现的位置,没有返回 -1
int indexOf(String str, int fromIndex)
fromIndex 位置开始找 str 第一次出现的位置,没有返回 -1
int lastIndexOf(int ch)
从后往前找,返回 ch 第一次出现的位置,没有返回 -1
int lastIndexOf(int ch, int fromIndex)
fromIndex 位置开始找,从后往前找 ch 第一次出现的位置,没有返 回-1
int lastIndexOf(String str)
从后往前找,返回 str 第一次出现的位置,没有返回 -1
int lastIndexOf(String str, int fromIndex)
fromIndex 位置开始找,从后往前找 str 第一次出现的位置,没有返 回-1
public static void main ( String [] args ) {
String s = "aaabbbcccaaabbbccc" ;
System . out . println ( s . charAt ( 3 )); // 'b'
System . out . println ( s . indexOf ( 'c' )); // 6
System . out . println ( s . indexOf ( 'c' , 10 )); // 15
System . out . println ( s . indexOf ( "bbb" )); // 3
System . out . println ( s . indexOf ( "bbb" , 10 )); // 12
System . out . println ( s . lastIndexOf ( 'c' )); // 17
System . out . println ( s . lastIndexOf ( 'c' , 10 )); // 8
System . out . println ( s . lastIndexOf ( "bbb" )); // 12
System . out . println ( s . lastIndexOf ( "bbb" , 10 )); // 3

4.转化

4.1数值转化字符串

 4.2大小写转换

String toUpperCase()
字符串转大写
String toLowerCase()
字符串转小写

 这两个函数只转换字母。

String s1 = "wang" ;
String s2 = "HELLO" ;
// 小写转大写
System . out . println ( s1 . toUpperCase ());
// 大写转小写
System . out . println ( s2 . toLowerCase ());

 运行结果: 

4.3字符串转数组

String s = "hello" ;
// 字符串转数组
char [] ch = s . toCharArray ();
// 数组转字符串
String s2 = new String ( ch );

 4.4 格式化

String s = String . format ( "%d-%d-%d" , 2002 , 5 ,2 4 );
System . out . println ( s );

 运行结果:  


 

5.字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据

5.1把字符串中的某个字符替换成指定字符

String str="aa1212bbac";
String str1=str.replace('a','0');
System.out.println(str1);

运行结果:  

5.2 把字符串中的某个字符串替换成指定字符串

String str="aa1212bbacbb";
String str2=str.replace("bb","ww");
System.out.println(str2);

运行结果:  

5.3替换首个内容 

String str="aa1212bbacbb";
String str3=str.replaceFirst("bb","ww");
System.out.println(str3);

运行结果:  

 


6.字符串拆分

6.1String[] split(String regex)

将字符串全部拆分
String str="123 0 456 789";
String arr[]=str.split(" ");
for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);
}

运行结果:  

 6.2String[] split(String regex, int limit)

将字符串以指定的格式,拆分为limit组
String str="123 0 456 789";
String arr[]=str.split(" ",2);
for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);
}

运行结果:  

拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义.  

注意事项 :
1. 字符 "|","*","+" 都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\\" ,那么就得写成 "\\\\" .
3. 如果一个字符串中有多个分隔符,可以用 "|" 作为连字符 .
String str = "name\\wang*age=21";
String arr1[]=str.split("\\*|\\\\");
for (int i = 0; i < arr1.length; i++) {System.out.println(arr1[i]);
}

运行结果:  

 


7 字符串截取

从一个完整的字符串之中截取出部分内容。

7.1String substring(int beginIndex)

从指定索引截取到结尾
String str="123abcwang";
System.out.println(str.substring(4));

运行结果: 

7.2String substring(int beginIndex, int endIndex)

截取部分内容
String str="123abcwang";
System.out.println(str.substring(4,7));

运行结果: 

注意事项 :
1. 索引从 0 开始
2. 注意前闭后开区间的写法 , substring(0, 5) 表示包含 0 号下标的字符 , 不包含 5 号下标

8.String trim()

去掉字符串中的左右空格,保留中间空格
String str = " hello world " ;
System . out . println ( "[" + str + "]" );
System . out . println ( "[" + str . trim () + "]" );

运行结果: 


以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

 

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

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

相关文章

web-初始前端

不区分大小写&#xff0c;单双引号&#xff0c; <html><head><title>初识HTML</title></head><body><h1>Hello world!</h1><img src OIF-C.jfif/></body> </html> <!-- 文件格式 --> <!DOCTYPE h…

42. 疯狂爬取王者荣耀所有皮肤高清海报(文末源码)

目录 前言 目的 思路 代码实现 1. 导包&#xff0c;部署好环境 2. 伪装请求头 3. 访问英雄列表&#xff0c;获取英雄ID 4. 分别访问各英雄主页&#xff0c;查看图片详情 5. 写入本地文件夹&#xff08;文件夹自动命名&#xff09; 完整源码 运行效果 总结 前言 阔…

SQL Server数据库 -- 索引与视图

文章目录 一、索引 聚集索引非聚集索引二、视图三、自定义函数 标量函数表值函数四、游标五、总结 前言 在学习完创建库表、查询等知识点后&#xff0c;为了更加方便优化数据库的存储和内容&#xff0c;我们需要学习一系列的方法例如索引与视图等等&#xff0c;从而使我们更加…

用 docker 创建 jmeter 容器,能做性能测试?

我们都知道&#xff0c;jmeter 可以做接口测试&#xff0c;也可以用于性能测试&#xff0c;现在企业中性能测试也大多使用 jmeter。docker 是最近这些年流行起来的容器部署工具&#xff0c;可以创建一个容器&#xff0c;然后把项目放到容器中&#xff0c;就可以构建出一个独立的…

如何使Python Docker镜像安全、快速、小巧

一、说明 在微服务领域&#xff0c;拥有安全、高效和紧凑的 Docker 映像对于成功部署至关重要。本博客将探讨有助于构建此类映像的关键因素&#xff0c;包括不以 root 用户身份运行映像的重要性、在构建映像时更新和升级包、在编写 Dockerfile 指令时考虑 Docker 的层架构&…

【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】

文章目录 torch.nn.PixelShuffle直观解释官方文档 torch.nn.PixelUnshuffle直观解释官方文档 torch.nn.PixelShuffle 直观解释 PixelShuffle是一种上采样方法&#xff0c;它将形状为 ( ∗ , C r 2 , H , W ) (∗, C\times r^2, H, W) (∗,Cr2,H,W)的张量重新排列转换为形状为…

APT80DQ40BG-ASEMI快恢复二极管APT80DQ40BG

编辑&#xff1a;ll APT80DQ40BG-ASEMI快恢复二极管APT80DQ40BG 型号&#xff1a;APT60DQ20BG 品牌&#xff1a;ASEMI 封装&#xff1a;TO-3P 恢复时间&#xff1a;≤50ns 正向电流&#xff1a;80A 反向耐压&#xff1a;400V 芯片个数&#xff1a;双芯片 引脚数量&…

ArcGIS Pro字段操作代码汇总

属性表是GIS数据的重要组成部分&#xff0c;有了属性表才可以进行分析和分类配色等操作&#xff0c;这里为大家介绍一下ArcGIS Pro中字段操作的相关代码&#xff0c;希望能对你有所帮助。 关键词搜索 打开属性表&#xff0c;点击按属性选择&#xff0c;如下图所示。 点击按属…

利用 OLE 对象漏洞的 HWP 恶意文件浮出水面

ASEC 分析人员发现了一个利用 OLE 对象的恶意 HWP 文件&#xff0c;尽管其使用了 2020 年就被识别的恶意 URL&#xff0c;但仍然使用了 Flash 漏洞&#xff08;CVE-2018-15982&#xff09;&#xff0c;需要用户谨慎对待。 打开 HWP 文件时会在 %TEMP%文件夹中生成如下文件。攻…

【多音音频测试信号】具有指定采样率和样本数的多音信号,生成多音信号的相位降低波峰因数研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Java-day07(面向对象-3,4)

继承 将多个类中共有的属性&#xff0c;方法剥离出来单独创建一个共有类&#xff0c;当需要使用共有的属性与方法时&#xff0c;就可以通过继承(extends)来调用共有的属性与方法。通过"class A extends B" 来实现类的继承&#xff08;子类&#xff1a;A 父类&#x…

微前端初识

文章目录 微前端的发展历史微前端的定义微前端的特点使用微前端面临的挑战微前端常用技术方案及优缺点路由分发式微前端iframesingle-spaqiankunwebpack5: module federationWeb Component 微前端的发展历史 微前端在2016年首次出现在TWTR&#xff08;ThoughtWorks Technology…

MySQL之深入InnoDB存储引擎——Undo页

文章目录 一、UNDO日志格式1、INSERT操作对应的UNDO日志2、DELETE操作对应的undo日志3、UPDATE操作对应的undo日志1&#xff09;不更新主键2&#xff09;更新主键的操作 3、增删改操作对二级索引的影响 二、UNDO页三、UNDO页面链表四、undo日志具体写入过程五、回滚段1、回滚段…

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建 bbcbbc

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务…

Mysql主从搭建 基于DOCKER

创建目录 #主节点目录 mkdir -p /home/data/master/mysql/#从节点目录 mkdir -p /home/data/slave/mysql/创建配置文件 # 主节点配置 touch /home/data/master/mysql/my.cnf# 从节点配置 touch /home/data/slave/mysql/my.cnf编辑配置文件 主节点配置文件 vim /home/data/m…

算法通关村第五关——n数之和问题解析

1. 两数之和问题 力扣第1题就是两数之和问题&#xff0c;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一…

Ishikawa

Ishikawa 石川、鱼骨头、因果 其实我压根不知道 Ishikawa 这个日文就是石川&#xff0c;^_^&#xff0c;视乎也没啥影响

计算机网络基础

文章目录 网络协议初识协议分层OSI七层模型TCP/IP五层协议 网络传输基本流程网络传输流程数据包装和分用封装过程分用过程 网络中的地址管理IP地址MAC地址 网络协议初识 协议是一种约定。 协议分层 分层之后&#xff0c;每一层只关注自己同层的功能&#xff0c;只使用下层的接…

卷积神经网络实现MNIST手写数字识别 - P1

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第P1周&#xff1a;实现mnist手写数字识别&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同…