String 类的运用

news2024/11/15 9:10:48

目录

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.coloradmin.cn/o/853793.html

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

相关文章

java 企业工程管理系统软件源码 自主研发 工程行业适用 em

​ 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

好用的无线蓝牙耳机怎么选?七款真无线蓝牙耳机分享盘点

随着蓝牙技术的不断进步&#xff0c;近年来蓝牙耳机发展更是呈指数式上升阶段。蓝牙耳机凭借其携带便捷性以及摆脱线的缠绕而在外出必备数码产品中名列前茅&#xff0c;现如今在日常生活中随处可见的都有戴着蓝牙耳机的人&#xff0c;或是听歌、或是降噪、或是玩游戏等等&#…

分享实录 | 将 NGINX 打造成功能强大的 API 网关(上)

原文作者&#xff1a;易久平 原文链接&#xff1a;分享实录 | 将 NGINX 打造成功能强大的 API 网关&#xff08;上&#xff09; NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.cn 大家好&#xff0c;很高兴加入此次 NGINX 深潜之旅。接下来我将给大家分享如何将 NGINX 打…

DP(状态机模型)

大盗阿福 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N 家店铺&#xff0c;每家店中都有一些现金。 阿福事先调查得知&#xff0c;只有当他同时洗劫了两家相邻的店铺时&#xff0c;街上的报警系统才会启动&#x…

Mac安装nvm教程及使用

nvm 是 node 版本管理器&#xff0c;也就是说一个 nvm 可以管理多个 node 版本&#xff08;包含 npm 与 npx&#xff09;&#xff0c;可以方便快捷的安装、切换 不同版本的 node。 1、直接通过brew安装 执行命令&#xff1a;brew install nvm PS&#xff1a; 如果没有安装br…

JDK 8 升级 JDK 17 全流程教学指南

JDK 8 升级 JDK 17 首先已有项目升级是会经历一个较长的调试和自测过程来保证允许和兼容没有问题。先说几个重要的点 遇到问题别放弃仔细阅读报错&#xff0c;精确到每个单词每一行&#xff0c;不是自己项目的代码也要点进去看看源码到底是为啥报错明确你项目引入的包&#x…

什么是碳中和认证申请气候友好证绿色标?

碳中和认证几乎所有卖家都适用&#xff0c;需要的资料比较简单&#xff0c;几乎所有的产品及所有的站点都可以做。 一、“碳中和”认证是什么&#xff1f; 碳中和认证是通过计算碳排放&#xff0c;减少碳排放&#xff0c;进而减少使地球变暖的温室气体的数量的一个认证。是亚…

Qt多线程编程

本章介绍Qt多线程编程。 1.方法 Qt多线程编程通常有2种方法&#xff1a; 1)通过继承QThread类&#xff0c;实现run()方法。 2)采用QObject::moveToThread()方法。 方法2是Qt官方推荐的方法&#xff0c;本文介绍第2种。 2.步骤 1)创建Worker类 这里的Worker类就是我们需要…

CSS:盒子模型 与 多种横向布局方法

目录 盒子模型块级盒子内联级盒子内联块级盒子弹性盒子display 改变模型区域划分text 内容区padding 填充区border 边框区margin 外边距直接设置盒子大小 布局横向布局方法一 float 浮起来方法二 内联块级元素实现方法三 弹性盒子模型 盒子模型 块级盒子 独占一行&#xff0c…

打破雇佣思想 云畅科技CIO曾颖博士浅析零雇工模式

作者简介 INTRO 曾 颖 工商管理博士 云畅科技高级合伙人、CIO 产业咨询&#xff06;企业数字化转型落地专家 2018年&#xff0c;“零雇工”企业组织创新2018全球创新创业教育高峰论坛在西安举行&#xff0c;我当时作为上海沐新众创空间的导师和分会场“企业家如何创建零雇工…

4G型无线液位变送器是什么?

4G型无线液位变送器采用了四代无线通讯技术&#xff0c;与普通液位计相比&#xff0c;免去了布线的烦恼&#xff0c;无需时刻监控现场&#xff0c;在大幅提高工作效率和减少人力成本的同时&#xff0c;还可以随时随地获取监测数据。 4G型无线液位变送器的功能优势&#xff1a;…

Unico-GUI软件关于ST传感器机器学习(MLC)基本操作步骤

准备工作 UNICO-GUI软件用于意法半导体产品组合&#xff08;加速度计、陀螺仪、磁力计和环境传感器&#xff09;中所有MEMS传感器的评估板。它可用于Linux&#xff08;基于Debian&#xff09; / Mac OS X / Windows平台。 Unico-GUI - MEMS evaluation kit software package …

hcip的重发布实验(2)

题目 拓扑图 IP地址和环回的配置 R1 <Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int l0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 Aug 9 2023 10:38:48-08:…

文件上传漏洞(webshell)和文件包含漏洞

一、防护 1、防护 1、判断文件后缀&#xff0c;为图片的话才让上传成功。 2、解析文件内容&#xff08;文件幻数&#xff09;判断文件头和文件尾部是否一致 幻数 常见的 3、隐藏按钮&#xff08;带上code唯一值&#xff09; 4、二次渲染&#xff08;类似拿着你的图片&#xff…

最大子数组和【力扣53】

一、解题思路 Max[i]表示&#xff1a;以nums[i]为开头的所有连续子数组和的最大值。 由此可以推出Max[i-1]和Max[i]的关系&#xff1a; 若Max[i]>0&#xff1a;Max[i-1]nums[i-1]Max[i]&#xff1b; 否则&#xff1a;Max[i-1]nums[i-1]&#xff1b; 则ansMAX&#xff0…

Mr. Cappuccino的第59杯咖啡——简单手写SpringIOC框架

简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p…

何时使用MongoDB而不是MySql

什么是 MySQL 和 MongoDB MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统&#xff0c;以结构化表格格式存储数据。相比之下&#xff0c;MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性&#xff0c;但它…

CGI, FastCGI, WSGI, uWSGI, uwsgi分别是什么?

CGI 1、通用网关接口&#xff08;Common Gateway Interface/CGI&#xff09;,CGI描述了服务器&#xff08;nginx,apache&#xff09;和请求处理程序&#xff08;django,flask,springboot web框架&#xff09;之间传输数据的一种标准. 2.所有bs架构软件都是遵循CGI协议的 3.一…

day10 快速排序 方法重载 和 方法递推

方法重载 斐波拉契数列问题 使用重载思想解决 public static int method(int n){if (n 2 ){return 1 ;}return (n-1)*2method(n-1);}public static int f(int n){if (n 1){return 1;}if (n 2){return 2;}return f(n-1)f(n-2);} 快速排序 思维很简单&#xff0c;类似二…

selenium获取b站视频标题

一、下载selenium 1. 下载对应版本的浏览器驱动 2. 安装selenium 3.把浏览器驱动放到使用的python内核的script目录中 二、测试效果模拟登录b站 from selenium import webdriver from selenium.webdriver.common.by import By import timebrowser webdriver.Chrome() # 打…