java 中 string常用方法及相关的例子

        我将为您详细讲解 Java 中 `String` 类的常用方法及其相关例子。`String` 类是 Java 中最常用的类之一,它代表字符串,提供了许多用于操作字符串的方法。


        1. 字符串比较
- `equals(Object obj)`: 比较字符串的内容是否相等。
- `equalsIgnoreCase(String str)`: 比较字符串的内容是否相等,不区分大小写。
        例子 1:字符串比较


public class StringExample {
  public static void main(String[] args) {
    String str1 = "Hello";
    String str2 = "hello";
    String str3 = "Hello World";
    System.out.println(str1.equals(str2)); // 输出: false
    System.out.println(str1.equalsIgnoreCase(str2)); // 输出: true
    System.out.println(str1.equals(str3)); // 输出: false
  }
}


        2. 字符串查找
- `indexOf(int ch)`: 查找指定字符在字符串中的第一次出现的位置。
- `indexOf(int ch, int fromIndex)`: 从指定位置开始查找指定字符在字符串中的第一次出现的位置。
- `lastIndexOf(int ch)`: 查找指定字符在字符串中的最后一次出现的位置。
- `lastIndexOf(int ch, int fromIndex)`: 从指定位置开始查找指定字符在字符串中的最后一次出现的位置。
        例子 2:字符串查找


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    System.out.println(str.indexOf('l')); // 输出: 3
    System.out.println(str.indexOf('l', 4)); // 输出: 7
    System.out.println(str.lastIndexOf('l')); // 输出: 7
    System.out.println(str.lastIndexOf('l', 6)); // 输出: 3
  }
}


        3. 字符串替换
- `replace(CharSequence target, CharSequence replacement)`: 将字符串中的指定字符序列替换为另一个字符序列。
- `replace(char oldChar, char newChar)`: 将字符串中的指定字符替换为另一个字符。
        例子 3:字符串替换


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    System.out.println(str.replace("World", "Java")); // 输出: Hello Java
    System.out.println(str.replace('l', 'x')); // 输出: Hexxo World
  }
}


        4. 字符串切割
- `split(String regex)`: 使用正则表达式将字符串分割成子字符串数组。
- `split(String regex, int limit)`: 使用正则表达式将字符串分割成子字符串数组,最多不超过指定数量。
        例子 4:字符串切割


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    String[] words = str.split(" "); // 输出: [Hello, World]
    String[] wordsLimit = str.split(" ", 1); // 输出: [Hello]
  }
}


        5. 字符串截取
- `substring(int beginIndex)`: 返回指定位置开始到字符串末尾的子字符串。
- `substring(int beginIndex, int endIndex)`: 返回指定位置开始到指定位置结束的子字符串。
        例子 5:字符串截取


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    System.out.println(str.substring(7)); // 输出: World
    System.out.println(str.substring(7, 11)); // 输出: World
  }
}

        6. 字符串连接
- `concat(String str)`: 将指定字符串连接到当前字符串的末尾。
         例子 6:字符串连接


public class StringExample {
  public static void main(String[] args) {
    String str1 = "Hello";
    String str2 = "World";
    System.out.println(str1.concat(str2)); // 输出: HelloWorld
  }
}


        7. 字符串长度
- `length()`: 返回字符串的长度。
        例子 7:字符串长度


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    System.out.println(str.length()); // 输出: 11
  }
}


        8. 字符串转换
- `toLowerCase()`: 将字符串中的所有字符转换为小写。
- `toUpperCase()`: 将字符串中的所有字符转换为大写。
- `trim()`: 移除字符串首尾的空格。
         例子 8:字符串转换


public class StringExample {
  public static void main(String[] args) {
    String str = "  Hello World  ";
    System.out.println(str.toLowerCase()); // 输出: hello world
    System.out.println(str.toUpperCase()); // 输出: HELLO WORLD
    System.out.println(str.trim()); // 输出: Hello World
  }
}


        9. 字符串比较器
- `compareTo(String anotherString)`: 按照字典顺序比较两个字符串。
- `compareToIgnoreCase(String str)`: 按照字典顺序比较两个字符串,不区分大小写。
        例子 9:字符串比较器


public class StringExample {
  public static void main(String[] args) {
    String str1 = "Hello";
    String str2 = "world";
    System.out.println(str1.compareTo(str2)); // 输出: 正数
    System.out.println(str1.compareToIgnoreCase(str2)); // 输出: 0
  }
}


        10. 字符串值比较
- `equalsValueOf(CharSequence cs)`: 比较两个字符串的值是否相等。
        例子 10:字符串值比较


public class StringExample {
  public static void main(String[] args) {
    String str1 = "Hello";
    String str2 = "hello";
    System.out.println(str1.equalsValueOf(str2)); // 输出: true
  }
}


        11. 字符串查找器
- `find()`: 在字符串中查找指定的字符序列。
        例子 11:字符串查找器


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello World";
    System.out.println(str.find("World")); // 输出: 6
  }
}


        12. 字符串不可变性
- `String` 类的实例是不可变的,这意味着一旦创建了 `String` 对象,其值就不能更改。
        例子 12:字符串不可变性


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello";
    str = "World"; // 创建了一个新的 String 对象,而不是修改旧的
  }
}


        13. 字符串的不可变性在多线程环境中的应用
- 在多线程环境中,由于 `String` 是不可变的,所以可以安全地共享 `String` 对象。
         例子 13:字符串的不可变性在多线程环境中的应用


public class StringExample {
  public static void main(String[] args) {
    String str = "Hello";
    // 在多线程环境中安全地共享 String 对象
    new Thread(() -> System.out.println(str)).start();
    new Thread(() -> System.out.println(str)).start();
  }
}


        14. 字符串的不可变性在集合中的应用
- 由于 `String` 是不可变的,因此它可以作为集合(如 `HashSet`、`TreeSet` 等)的元素,因为集合需要能够确定元素的唯一性。
        例子 14:字符串的不可变性在集合中的应用


import java.util.HashSet;
import java.util.Set;
public class StringExample {
  public static void main(String[] args) {
    Set<String> set = new HashSet<>();
    set.add("Hello");
    set.add("World");
    set.add("Hello"); // 不会添加重复的元素
  }
}


        15. 字符串的不可变性在缓存中的应用
- 在缓存实现中,经常使用 `String` 作为键,因为它们是不可变的,不会因为并发更新而产生不一致的状态。
        例子 15:字符串的不可变性在缓存中的应用


import java.util.concurrent.ConcurrentHashMap;
public class StringExample {
  public static void main(String[] args) {
    ConcurrentHashMap<String, String> cache = new ConcurrentHashMap<>();
    cache.put("Hello", "World");
    // 由于 String 是不可变的,因此可以安全地作为缓存的键
  }
}


        16. 字符串的不可变性在正则表达式中的应用
- 在使用正则表达式时,通常需要创建一个 `Pattern` 对象,这个对象是不可变的,可以在多个线程中共享。
        例子 16:字符串的不可变性在正则表达式中的应用


import java.util.regex.Pattern;
public class StringExample {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("Hello");
    // 由于 Pattern 是不可变的,可以在多个线程中共享
  }
}


        总结
        Java 中的 `String` 类提供了丰富的方法来操作字符串。从字符串比较、查找、替换到截取、连接、转换,这些方法使得字符串的处理变得非常灵活和方便。字符串的不可变性在多线程编程、集合实现、缓存和正则表达式等方面都有重要的应用。通过理解和熟练使用这些方法,可以提高编程效率,并确保代码的健壮性和安全性。希望这个详细的讲解能够帮助您更好地理解 Java `String` 类的常用方法及其应用。如果您有任何问题或需要进一步的解释,请随时提问。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云域名优惠口令2024年最新,com、cn和域名注册续费使用

2024年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

堆以及堆的实现

文章目录 堆的概念堆的实现HeapPushHeapPop HeapTop HeapSize HeapEmpty堆的应用 堆的概念 堆是一颗完全二叉树每个结点的值都小于子结点的值&#xff0c;这颗二叉树为小根堆每个结点的值都大于子结点的值&#xff0c;这颗二叉树为大根堆堆的定义如下&#xff1a;n个元素的序列…

覆盖element-ui的el-menu样式记录:背景图片、菜单图标、菜单高亮与鼠标悬浮高亮、调整子菜单等样式

页面中修改el-menu 设置background-color"transparent"&#xff0c;menu菜单下的背景图片则能正常显示了 <el-menuclass"el-menu-demo"mode"horizontal"background-color"transparent"><el-menu-item index"1">…

Java开发进大厂面试必备技能,面试初级java工程师问题

前言 今天的分享主要是讲下这个 redis&#xff0c;什么是缓存雪崩、穿透和击穿。这三个技术问题是我们平时开发工作中和面试过程中&#xff0c;必须要会的知识点&#xff0c;因为目前的互联网系统没有几个不需要用到缓存的&#xff0c;只要用到缓存的话&#xff0c;就需要掌握…

Long-term Correlation Tracking LCT目标跟踪算法原理详解(个人学习笔记)

目录 1. 算法总览2. 算法详解2.1. 基础相关滤波跟踪2.2. 各模块详解2.2.1. 相关跟踪2.2.2. 在线检测器 3. 算法实现3.1. 算法步骤3.2. 实现细节 4. 相关讨论&总结 1. 算法总览 LCT的总体流程如上图所示&#xff0c;其思想为&#xff1a;将长时跟踪&#xff08;long-term tr…

C++进阶之路---继承(一)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、继承的概念及定义 1.继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0…

MM配置1-定义、复制、删除、检查工厂

配置步骤&#xff0c;如下图&#xff1a; 双击“复制&#xff0c;删除&#xff0c;检查工厂选项” 点击“复制”按钮&#xff0c;输入参考工厂&#xff0c;和要新建的工厂 复制完成后&#xff0c;返回到上一界面&#xff0c;双击“定义工厂”选项 选中新建的1070工厂&#xff0…

超简单Windows-kafka安装配置

参考大佬文章&#xff1a; Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上的安装、运行-CSDN博客Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上…

android开发的基础,大厂程序员35岁后的职业出路在哪

为什么越来越多的年轻人感觉工作没有动力、职业发展没有希望&#xff0c;迷茫和中年危机等现象普遍发生&#xff1f; 人常说&#xff0c;安居才能乐业。 前些年&#xff0c;房价虽然也不低&#xff0c;但刚工作的年轻人&#xff0c;努力奋斗&#xff0c;攒上几年钱&#xff0c…

爬虫学习笔记-requests爬取王者荣耀皮肤图片

1.导入所需的包 import requests from lxml import etree import os from time import sleep 2.定义请求头 headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36} 3.发送请求 # hero…

线程同步的方法1——互斥锁、信号量

目录 一、引入 二、利用多线程同步解决线程并发 三、线程同步的概念 四、互斥锁 4.1互斥锁接口 4.2全局变量正确性问题&#xff08;引例&#xff09; 4.3 互斥锁例2(共享资源(打印机)使用问题) 五、信号量 5.1 信号量接口 5.2 全局变量正确性问题 5.3 信号量例2 一、…

前方高能,又一波Smartbi签约喜报来袭

近期&#xff0c;交通银行、厦门国际银行、中原农业保险、江苏中天科技等多家知名企业签约Smartbi&#xff0c;携手Smartbi实现数据驱动业务新增长。 Smartbi数10年专注于商业智能BI与大数据分析软件与服务&#xff0c;为各行各业提供提供一站式商业智能平台&#xff08;PaaS&a…

阿里云老用户可以购买99元服务器,2核2G3M固定带宽,你说牛不牛?

2024阿里云服务器优惠活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器8核…

域名 DNS 信息查询 API 数据接口

域名 DNS 信息查询 API 数据接口 网络工具&#xff0c;多种记录类型数据返回&#xff0c;丰富的信息结构&#xff0c;毫秒级响应。 1. 产品功能 提供域名 DNS 解析完整记录&#xff1b;丰富的解析记录类型&#xff0c;包括&#xff1a;A, AAAA, MX, TXT, NS, CNAME, SRV, PTR…

pgvector docker部署测试

docker pull pgvector/pgvector:pg16 运行 docker run --name pgvector --restartalways -e POSTGRES_USERpgvector -e POSTGRES_PASSWORDpgvector -v /srv/tlw/pgvectordata:/var/lib/postgresql/data -p 54333:5432 -d pgvector/pgvector:pg16 CREATE EXTENSION vector; --…

ORACLE 如何使用dblink实现跨库访问

dbLink是简称&#xff0c;全称是databaselink。database link是定义一个数据库到另一个数据库的路径的对象&#xff0c;database link允许你查询远程表及执行远程程序。在任何分布式环境里&#xff0c;database都是必要的。另外要注意的是database link是单向的连接。在创建dat…

重装显卡驱动记录

重装显卡驱动记录 任务记录现状描述执行情况 任务 晚上回来&#xff0c;开电脑&#xff0c;发现总是进不去系统&#xff08;这个情况我经常见&#xff09;&#xff0c;但偶尔进系统&#xff0c;识别不了我的外接屏&#xff08;这个第一次见&#xff09;。来来回回重启了1h多了…

QT安装教程,手把手教会QT安装

大家好&#xff1a;衷心希望各位点赞和评论&#xff01; 安装步骤 首先去官网下载QT&#xff0c;官网&#xff1a;https://download.qt.io/https://download.qt.io/ 点击 offical_releases &#xff08;官方发行版本&#xff09;&#xff0c;如下图所示&#xff1a; 进入下图所…

【C++】102.二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&#xff1…

反射面试题

反射的优点&#xff1a;提高Java程序的灵活性和扩展性&#xff0c;降低了耦合性&#xff0c;提高自适应能力。 允许创建和控制任意类对象&#xff0c;无需提前硬编码目标类 缺点&#xff1a; 反射的性能低 反射机制主要在对灵活性和扩展性要求很高的系统框架上。 放射会模糊内部…