String类的常用方法(Java)

news2024/11/26 19:56:02

目录

  • 一、字符串构造
  • 二、String对象的比较
    • 1、==比较是否引用同一个对象
    • 2、boolean equals(Object anObject) 方法:按照字典序比较
    • 3、int compareTo(String s) 方法: 按照字典序进行比较
    • 4、int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较
  • 三、字符串查找
  • 四、转化
    • 1、数值和字符串转化
    • 2、大小写转换
    • 3、字符串转数组
  • 五、字符串替换
  • 六、字符串拆分
  • 七、字符串截取
  • 八、其他操作方法

一、字符串构造

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

    public static void main(String[] args) {
        // 使用常量串构造
        String s1 = "hello";
        System.out.println(s1);
        // 直接newString对象
        String s2 = new String("hello");
        System.out.println(s1);
        // 使用字符数组进行构造
        char[] array = {'h', 'e', 'l', 'l', 'o'};
        String s3 = new String(array);
        System.out.println(s1);
    }

注意

  1. String是引用类型,内部并不存储字符串本身
  2. 在Java中“”引起来的也是String类型对象。

二、String对象的比较

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

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        // 对于基本类型变量,==比较两个变量中存储的值是否相同
        System.out.println(a == b); // false
        System.out.println(a == c); // true
        // 对于引用类型变量,==比较两个引用变量引用的是否为同一个对象
        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、boolean equals(Object anObject) 方法:按照字典序比较

字典序:字符大小的顺序

    public boolean equals(Object anObject) {
        // 1. 先检测this 和 anObject 是否为同一个对象比较,如果是返回true
        if (this == anObject) {
            return true;
        }
        // 2. 检测anObject是否为String类型的对象,如果是继续比较,否则返回false
        if (anObject instanceof String) {
            // 将anObject向下转型为String类型对象
            String anotherString = (String) anObject;
            int n = value.length;
            // 3. this和anObject两个字符串的长度是否相同,是继续比较,否则返回false
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                // 4. 按照字典序,从前往后逐个字符进行比较
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

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

与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:

  1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
  2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

4、int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较

三、字符串查找

char charAt(int index) //返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常

int indexOf(int ch) //返回ch第一次出现的位置,没有返回-1

int indexOf(int ch, intfromIndex) //从fromIndex位置开始找ch第一次出现的位置,没有返回-1

int indexOf(String str) //返回str第一次出现的位置,没有返回-1

int indexOf(String str, intfromIndex) //从fromIndex位置开始找str第一次出现的位置,没有返回-1

int lastIndexOf(int ch) //从后往前找,返回ch第一次出现的位置,没有返回-1

int lastIndexOf(int ch, intfromIndex) //从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1

int lastIndexOf(String str) //从后往前找,返回str第一次出现的位置,没有返回-1

int lastIndexOf(String str, intfromIndex) //从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1

注意:上述方法都是实例方法。

四、转化

1、数值和字符串转化

static String valueOf(char[]);

2、大小写转换

String toUpperCase();//大写
String toLowerCase();//小写

3、字符串转数组

char[] toCharArray();

五、字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:

String replaceAll(String regex, String replacement) //替换所有的指定内容

String replaceFirst(String regex, String replacement) //替换收个内容

注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.

六、字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

String[] split(String regex) //将字符串全部拆分

String[] split(String regex, int limit) //将字符串以指定的格式,拆分为limit组

注意事项:

  1. 字符"|“,”*“,”+"都得加上转义字符,前面加上 “\” .
  2. 而如果是 “” ,那么就得写成 “\\” .
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

七、字符串截取

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

String substring(int beginIndex) //从指定索引截取到结尾

String substring(int beginIndex, int endIndex) //截取部分内容

注意事项:

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

八、其他操作方法

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

SpringMVC相对路径和绝对路径

1.相对地址与绝对地址定义 在jsp,html中使用的地址,都是在前端页面中的地址,都是相对地址 地址分类:(1),绝对地址,带有协议名称的是绝对地址,http://www.baidu.com&…

c语言练习41:深入理解字符串函数strlen strcpy strcat

深入理解字符串函数strlen strcpy strcat 模拟实现&#xff1a;”strlen strcpy strcat strlen strcat: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<assert.h> strlen 1.通过指针移动模拟 //int my_strlen(char* str) { // size_t c…

Unity之创建第一个游戏

一 Unity环境配置 1.1 Untity资源官网下载&#xff1a;https://unity.cn/releases 1.2 Unity Hub集成环境&#xff0c;包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD&#xff0c;JDK&#xff0c;NDK工具&#xff0c;用于and…

Python之写文件操作(二十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

长风破浪会有时,直挂云帆济沧海!(工作室年会总结)

前言 我也是有段时间没写过总结性的博客了。最近是很忙的&#xff0c;尤其是年会那两天&#xff0c;我甚至可以说这是我这辈子目前最忙的两天。但这段经历还是很值得我记录下来的&#xff0c;也是给后面有需要的人提供的一些建议。我个人也是第一次筹办这种大型些的活动&#x…

SpringBoot_第六章(知识点总结)

目录 1&#xff1a;拦截器(Interceptor) 1.1&#xff1a;拦截器代码实现 1.2&#xff1a;拦截器源码分析和流程总结 2&#xff1a;过滤器(Filter)、自定义(Servlet)、监听器(Listener) 3&#xff1a;文件上传 3.1&#xff1a;文件上传代码实现 3.2&#xff1a;文件上传源…

部署Redis集群

文章目录 部署Redis集群1. 准备集群主机2. 启用集群功能3. 配置管理主机并创建集群3.1 配置管理主机 192.168.88.573.2 创建集群创建集群命令创建集群失败解决办法 3.3 查看集群信息查看集群统计信息查看集群详细信息 4. **测试集群及集群工作原理**4.1. 访问集群存取数据4.2 *…

Jmeter进阶使用指南-使用参数化

Apache JMeter是一个广泛使用的开源负载和性能测试工具。在进行性能测试时&#xff0c;我们经常需要模拟不同的用户行为和数据&#xff0c;这时候&#xff0c;参数化就显得尤为重要。此文主要介绍如何在JMeter中使用参数化。 什么是参数化&#xff1f; 参数化是一种将静态值替…

OpenCV之ellipse函数

ellipse函数用来在图片中绘制椭圆、扇形&#xff0c;有两个重载函数。 函数原型1&#xff1a; void cv::ellipse( InputOutputArray img,Point center,Size axes,double angle,double startAngle,double …

ORB-SLAM2算法14之局部建图线程Local Mapping

文章目录 0 引言1 概述2 处理队列中的关键帧3 剔除坏的地图点4 创建新地图点5 融合当前关键帧和其共视帧的地图点6 局部BA优化7 剔除冗余关键帧 0 引言 ORB-SLAM2算法7详细了解了System主类和多线程、ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成、ORB-SLAM2算法…

如何使用SpringCloud Eureka 创建单机Eureka Server-注册中心

&#x1f600;前言 本篇博文是关于使用SpringCloud Eureka 创建单机Eureka Server-注册中心&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&…

Jenkins实现基础CD操作

操作截图 在Jenkins里面设置通过标签进行构建 在Jenkins中进入项目&#xff0c;配置以下 将execute shell换到invoke top-level maven targets之前 在gitlab中配置标签 代码迭代新的版本 项目代码迭代 修改docker-compose.yml 提交新版本的代码 在Jenkins中追加新…

Java调用Web Service接口

方法1. 用IDEA生成相关代码调用方法。 在IDEA插件商店下载插件 然后新建一个Java项目 创建一个包来存放生成的代码&#xff0c;(点击一下)选中这个包&#xff0c;点击Tools 填入接口url&#xff0c;记住后面拼接“?wsdl”&#xff0c;选择生成方法&#xff0c;然后OK即可生…

如何重构大数据时代中小企业的信用评价指标体系?

在大数据时代&#xff0c;中小企业信用评价具有重要的意义。中小企业是经济社会发展的重要力量&#xff0c;他们对就业、经济增长和创新发挥着重要作用。然而&#xff0c;中小企业信用评价面临各种挑战&#xff0c;比如&#xff0c;中小企业融资难的原因就在于信用评价难&#…

nginx-QPS限制

漏桶算法&#xff1a; 通过nginx配置实现QPS限速。 #设置请求并发量 qps1&#xff0c;不设置burst&#xff0c;会同时处理并发的请求&#xff0c;但是由于我们只设置了1个qps&#xff0c;所以同一时间内的请求&#xff0c;只有一个是正常的&#xff0c;其他都是失败的。 http配…

andriod studio 手机模拟器中的文件导出方法

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录 阅读前请看一下&#xff1a;我是…

让你的编程之路更加顺畅——推荐一款前端编程神器

引子&#xff1a;在当今的数字化时代&#xff0c;编程已经成为一种不可或缺的技能。而前端开发&#xff0c;作为整个应用程序的“门面”&#xff0c;更是需要开发人员具备优秀的网页设计和编程能力。今天&#xff0c;我要向大家推荐一款专门为前端开发者打造的APP&#xff0c;它…

leetcode LCR 007 mid. 三数之和。对撞指针解法

题目 算法 对撞指针。双指针的一种&#xff0c;特点是一前一后&#xff0c;相向而行&#xff0c;两个指针相遇时为终点 code var threeSum function(nums) {let len nums.lengthnums.sort((a,b) > a-b)// 元素不足3个, 或 最小值>0 或 最大值<0&#xff0c;不会出…

插件_创蓝图文滑动验证码

目录 [1] 准备工作[2]使用1(1) 引入验证码js(2) 定义button引入js(3)在恰当的时机调起验证图(4) 校验之后的回调 [3] 使用2(1) 引入验证码js(2) 定义Captcha构造函数引入js(3)在恰当的时机调起验证图(4) 校验之后的回调 在进行低价秒杀时需要做一个人机校验防止机器抢购&#x…

切分支解决切不走因为未合并的路径如何解决

改代码的时候改做分支了&#xff0c;本来是在另一个分支上面改代码&#xff0c;结果改到另一个放置上面&#xff0c;然后想着使用git stash进行保存&#xff0c;然后切到另外一个分支再pop&#xff0c;结果不行。 报这个错误&#xff0c;导致切不过去&#xff0c;因为我这边pop…