String的方法介绍以及实现

news2025/1/21 6:27:09

今天需要掌握的有如下方法,有点多,但是不难,加油吧

1.字符串的查找

2.字符串的转化

3.字符串的截取

4.字符串的替换

5.字符串的拆分

6.字符串的其他方法

1.字符串的查找

public class TestDemo {
    public static void main(String[] args) {
        String str=new String("abcdagh");
        char ch=str.charAt(1);//这个方法的意思就是以字符串的某个下标取出对应的字母值
        System.out.println(ch);//b
        System.out.println("=====");
        int  ret=str.indexOf('a');//这个方法是以字符串的某个元素为参数,求它对应的下标值
        System.out.println(ret);//0
        System.out.println("====");
        int ret1=str.indexOf('a',2);//还是以字符串的某个元素为参数,求它对应的下标值,但是要从某个具体的位置开始
        System.out.println(ret1);//4
        System.out.println("====");
        int ret2=str.indexOf("bcd");//这以一个字符串中的子串为参数,找他第一次在字符串中出现的位置,并返回该子串的首字母的下标值
        System.out.println(ret2);//1
        System.out.println("====");
        int ret6=str.indexOf("abc",0);//这以一个字符串中的子串为参数,找他第一次在字符串中出现的位置,并返回该子串的首字母的下标值,但是要从某个具体的位置开始
        System.out.println(ret6);//0
        System.out.println("====");
        int  ret3=str.lastIndexOf('g');//这个方法是以字符串的某个元素为参数,求它对应的下标值,但是是从后往前数
        System.out.println(ret3);//5
        System.out.println("====");
        int ret4=str.lastIndexOf('a',3);//这个方法是以字符串的某个元素为参数,求它对应的下标值,但是是从后往前数,但是要从某个具体的位置开始
        System.out.println("====");
        int ret5=str.lastIndexOf("agh");//这以一个字符串中的子串为参数,找他第一次在字符串中出现的位置,并返回该子串的首字母的下标值,并且是从后往前数的
        System.out.println(ret5);//4
        System.out.println("====");
        int ret7=str.lastIndexOf("abc",4);//这以一个字符串中的子串为参数,找他第一次在字符串中出现的位置,并返回该子串的首字母的下标值,但是要从某个具体的位置开始,并且是从后往前数的
        System.out.println(ret7);//0




    }

 每个方法都放在上述代码中了,并且有详细的介绍

2.字符串的转化

字符串的转化指的是字符串变成数组,数组变成字符串,数值和字符串转化,大小写转换 格式化

下面用代码来印证

 String s = "hello";
// 字符串转数组
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i]);
        }

💚💚💚 总结

字符串转数组的时候:用toCharArray方法

字符串转数组的时候

 String s2 = new String(ch);
        System.out.println(s2);

直接把数组扔在new好的String对象中

我们看看toString源码

 它的返回类型是String类型的,这一点很重要,千万不要忘记,还有,求字符串长度时要用.length(),求数组长度,用.length

数组转字符串时,将定义好的数组扔在new出的String对象即可

数值和字符串转化

1.要是数字转字符串的话,使用valueOf方法进行转换

2.要是字符串转数组的话,使用pase的方法

下面来具体举例

public class TestDemo {
    public static void main(String[] args) {
      
      //数字转字符串
       String str=String.valueOf(123);
        System.out.println(str);
        //字符串转数组
        int data =Integer.parseInt("1314520");
        System.out.println(data);
        double data1=Double.parseDouble("12.35");
        System.out.println(data1);
    }
}

大小写转换

使用

 String str2="wyb";
        String str1=str2.toUpperCase();
        System.out.println(str1);

 

toUpperCase来实现小写变大写

使用toLowerCase来实现大写变小写

String   s="WHY";
        String s1=s.toLowerCase();
        System.out.println(s1);

 

字符串的格式化

这个不咋常用,就是用C语言学过的%d来格式化,比如在表示年月日的时候

String string =String.format("%d-%d-%d",2022,11,28);
        System.out.println(string);

用format函数进行格式化

下面来说一说字符串的截取

字符串的截取使用subString方法,

这个方法是从指定下标的字母一直到结尾

 这个方法是指定开始和结尾

字符串的替换

 

 这个方法的意思是把这个字符串所有的a换成p

 这个方法是把第一个指定的出现的字母换成指定的,其他的不变

字符串的拆分

字符串的拆分一般使用两个方法

split方法,下面通过代码讲解

以空格分割

 

这个和上一个有一点区别,这个是有分割部分数量的限制

这是以空格分开,分成两部分

还有以特殊字符分的,这要用到转义字符

 

两个\\代表转义字符符号\

以此类推四个\\\\代表两个\\

 

 String目前掌握这些方法就行了,然后最后再来说一个方法

trim()方法

这个方法是去掉字符串左右的空格,保留中间的空格

 

这是String类的源码,它是被final修饰的,里面存元素的变量value也被final修饰,还被private修饰,说明外部类拿不到value

String类不可以被继承,存元素的value不可以修改引用的对象,但可以指定内容修改

 

 字符串不可变说的是所引用的对象不可以更改,也就是说不能改变指向,但可以修改对象具体的值

更不是因为被final修饰而不可变,被final修饰只是不可以被继承

那么将字符串设置为不可变有啥哈好处呢

1.字符串变量都放在常量池中,不涉及深拷贝和浅拷贝的问题

2.线程更加安全,不涉及频繁的加锁和解锁

3.更加能存hashcode

那么我们想要修改字符串的值的时候,会new 一个新的对象,所以应该怎么办呐,请听下回分解

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

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

相关文章

java进阶—集合

前面我们知道了一个能存东西的数据结构&#xff0c;数组 java 基础——数组&#xff0c;现在我们来看一个高级一点的东西&#xff0c;集合 这里先提一点&#xff0c;集合的底层其实是数组 集合&#xff08;collection&#xff09;是什么呢&#xff1f; 我们可以把集合想象成…

接口测试需求分析

测试接口的时候&#xff0c;可能很多人都会想&#xff0c;按着研发给的接口协议文档来测&#xff0c;不就好了吗&#xff1f; 其实&#xff0c;对于接口的测试&#xff0c;还需要有点深度的需求分析&#xff0c;然后再进行对应的测试。对于接口测试&#xff0c;这里有个不太详…

python 高级技巧

闭包 定义双层嵌套函数&#xff0c;内层函数可以访问外层函数的变量 将内层函数作为外层函数的返回&#xff0c;此层函数就是闭包函数 在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部函数&#xff0c;我们把这个使用外部函数变…

12小时,教室与生产线接力 复旦MBA科创青干营首个整合实践活动日

针对有志于投身科创事业的复旦MBA学生&#xff0c;复旦管院特别开设“复旦MBA科创青干营”&#xff0c;将科创管理教育与MBA培养体系深度融合。在MBA核心课基础上&#xff0c;学院为学生定制了原创、系统和注重实战的科创课程&#xff0c;并通过科创企业参访、科创先锋论坛、科…

初学者如何打开ABAQUS力学有限元仿真的大门

作者 | 静安 仿真秀专栏作者 导读&#xff1a;明年6月&#xff0c;笔者即将研究生毕业&#xff0c;从最初摸爬滚打一个人自学有限元力学仿真&#xff0c;到现在已经有三年多了。我研究方向是静力学仿真&#xff08;Abaqus&#xff09;和基于python的Abaqus二次开发。时至今日&…

MySQL命令行插入数据乱码分析

MySQL命令行插入数据乱码分析 1.起因 在开发过程中&#xff0c; 在linux 的上MySQL 的客户端提交插入数据的SQL, 然后数据在页面展示的时候乱码&#xff0c;在网上查找了一些资料&#xff0c;说是MySQL 的客户端连接设置是Latin1导致的&#xff1b;(当然肯定还是有是由其他的…

【iOS开发-AFNetWorking下的POST和GET】

文章目录写在开头GET 和POSTGET 和POST的区别联系AFNetWorking使用方法DEMOGET请求数据GET方法GET请求到的数据解析POST请求POST的请求测试1POST请求测试二请求的数据拼接POST- DEMO2POST方法2参数理解POST方法2的注意头像对于DATA的转换在Block里进行拼接方法MIME Type的简单认…

QFileInfo(文件信息)和临时文件

QFileInfo提供有关文件在文件系统中的名称和位置&#xff08;路径&#xff09;&#xff0c;其访问权限以及它是目录还是符号链接等的信息。文件的大小和上次修改/读取时间也可用。QFileInfo还可用于获取有关Qt资源的信息 QFileInfo可以指向具有相对或绝对文件路径的文件。绝对…

FFmpeg实现fmp4+h265 aac切片命令

目录 背景 环境 FFmpeg实现fmp4h265 aac切片命令 使用go创建hls server 使用hls.js demo播放 播放地址&#xff1a;hls.js demo 背景 Chrome在104/105版本后&#xff0c;支持硬解h265&#xff0c;使得hls利用浏览器硬解特性播放h265视频。hls官方要求h265必须使用fmp4格…

Yolov5算法解读

yolov5于2020年由glenn-jocher首次提出&#xff0c;直至今日yolov5仍然在不断进行升级迭代。 Yolov5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本。文件中&#xff0c;这几个模型的结构基本一样&#xff0c;不同的是depth_multiple模型深度和width_multiple模型宽度这两个参…

[网络] TCP协议中的三次握手是什么?利用3次握手的SYN Flood DDOS攻击知道吗?

文章目录前言术语TCP协议三次握手的由来网络协议里的握手阶段Sequence Number是什么&#xff1f;TCP协议三次握手都发送了什么数据&#xff1f;TCP数据包长什么样&#xff1f;SYN Flood DDOS攻击是什么&#xff1f;结语前言 介于TCP协议中三次握手经常会被问到&#xff0c;以及…

NBA体育决策和数据挖掘分析

业务挑战 体育运用大数据主要体现在以下三个方面&#xff1a; 预测比赛结果和奖牌归属&#xff1b;更好地训练运动员 。数据和模型驱动体育决策让获胜和成功变得更有可能&#xff0c;体育统计(Sports Analytics)成为体育竞争的“杀手锏”。最近我们被客户要求撰写关于体育统计…

鲲鹏devkit性能分析工具介绍(一)

鲲鹏devkit性能分析工具介绍&#xff08;一&#xff09; 鲲鹏性能分析工具由四个子工具组成&#xff0c;分别为&#xff1a;系统性能分析、Java性能分析、系统诊断和调优助手。 系统性能分析是针对基于鲲鹏的服务器的性能分析工具&#xff0c;能收集服务器的处理器硬件、操作…

从2022安洵杯[babyPHP]看Soap+CLRF造成SSRF漏洞

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、PHP SOAP 二、漏洞成因 三、 题目知识准备 1、PHP Session反序列化 2、题目相关函数 四、[LCTF 2018]bestphps revenge 五、2022安洵杯 BabyPHP 前言 …

基于ASP.net的服装商城设计

目录 海秀衣城系统 2 1.概 述 2 1.1 网上购物的发展 2 1.2 三层架构技术简介 2 2. 系统总体设计 4 2.1 开发以及运行环境 4 2.2项目结构分析 4 2.3系统功能总体结构图 5 2.4系统功能结构分解图 5 3. 数据库设计 6 3.1 数据库设计 6 3.2 数据表 7 4. 模块设计 10 4.1 前端功能模…

SpringCloud微服务实践之七 网关(Gateway)

一、网关基本概念 &#xff08;一&#xff09;网关功能 身份认证和权限校验服务路由、负载均衡请求限流 &#xff08;二&#xff09;网关技术选型 SpringCloud提供了两个组件都可以实现网关功能&#xff1a; gatewayzuul 其中&#xff0c;Zuul是基于Servlet的实现&#xff…

SQL注入漏洞 | 数字型

文章目录前言MySQL 数字型前言 SQL注入漏洞 | iwebsec MySQL 数字型 页面观察&#xff1a;测试看回显 注入点判断&#xff1a;发现有sql注入漏洞 AND 可在 where 子语句中把两个或多个条件结合起来。如果第一个条件和第二个条件都成立&#xff0c;则 AND 运算符显示一条记录…

HBuilder X实现tabBar底部导航记录

首先&#xff0c;打开uniapp官网&#xff0c;找到tarbar官方文档&#xff0c;仔细阅读&#xff0c;具体位置如下&#xff0c;全局配置下面的pages.json页面路由里面找到tabBar&#xff0c;点击查看&#xff1a; 重点注意这两句话&#xff1a; 找到文档我们就可以按照上面的提示…

迭代器模式(Iterator)

参考&#xff1a; 迭代器设计模式 (refactoringguru.cn) [design-patterns-cpp/Iterator.cpp at master JakubVojvoda/design-patterns-cpp GitHub 文章目录一、什么是迭代器模式&#xff1f;二、实现三、优缺点优点缺点一、什么是迭代器模式&#xff1f; 提供一种方法&…

QFont-使用外部字体文件的问题

我们程序里面定义了某个结构体(这里简单描述为AStruct)&#xff0c;AStruct包含了一个QFont 类型的成员变量&#xff1a; struct AStruct {QFont ft; }; 在具体业务上&#xff0c;AStruct中的QFont会被传递给QPainter去绘制文本。 保存工程/加载工程时时&#xff0…