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

news2024/11/24 9:45:05

        我将为您详细讲解 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` 类的常用方法及其应用。如果您有任何问题或需要进一步的解释,请随时提问。

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

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

相关文章

【官宣】2024广州国际酒店工程家具及商业空间展览会

2024广州国际酒店工程家具及商业空间展览会 Guangzhou International Hotel Engineering Furniture and commercial space exhibition 2024 时间&#xff1a;2024年12月19-21日 地点&#xff1a;中国进出口商品交易会展馆 承办单位&#xff1a;广州佛兴英耀展览服务有…

9.12零钱兑换(LC518-M)(开始完全背包,与01背包的不同仅在于遍历顺序)

算法&#xff1a; 这是一道典型的背包问题&#xff0c;一看到钱币数量不限&#xff0c;就知道这是一个完全背包。 但本题和纯完全背包不一样&#xff0c;纯完全背包是凑成背包最大价值是多少&#xff0c;而本题是要求凑成总金额的物品组合个数&#xff01; 动规五步曲&#…

[Redis]——数据一致性,先操作数据库,还是先更新缓存?

目录 一、操作缓存和数据库时有三个问题需要考虑&#xff1a; 1.删除缓存还是更新缓存&#xff1f; 2.如何保证缓存与数据库的操作同时成功或失效 3.先操作缓存还是先操作数据库&#xff08;多线程并发问题&#xff09; 二、 缓存更新的最佳策略 一、操作缓存和数据库时有…

网络学习:Vlan间路由

目录 一、vlan间路由实现的方法 二、精确匹配转发&#xff08;交换机&#xff09;流程 三、最长匹配转发&#xff08;路由器&#xff09; 四、交换机最长匹配转发 五、总结 一、vlan间路由实现的方法 方法1&#xff1a;使用路由器的物理接口 特点&#xff1a;在路由器上…

LeetCode-第67题-二进制求和

1.题目描述 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 2.样例描述 3.思路描述 将两个二进制字符串转换成整型&#xff0c;然后相加后的整型转为二进制字符串 4.代码展示 class Solution(object):def addBinary(self, a, b):# 将字符串…

Linux 之二:CentOS7 的 IP 常用命令和配置及 xshell 基本使用方法

1. 进入虚拟机 点击右键---进入终端--输入 ip adrr 或 ifconfig 查看ip地址 下面输入命令 ifconfig&#xff08;注意&#xff1a;不是 ipconfig &#xff09; 或 ip addr 来查看当前系统 IP 查看到IP 后&#xff0c;比如&#xff1a;上面是 192.168.184.137 1.1 IP 常用命令…

(文末送书)《低代码平台开发实践:基于React》

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&am…

LeetCode234.回文链表

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 输入&#xff1a;head [1,2] 输出&#xff1a;false 思…

mysql 时间精度问题

timestamp到2038年&#xff0c;还有14年时间&#xff0c;一个系统如果能活到那一刻也是相当不错了。 这里先看一下个datetime的问题,下面的插入数据的时间戳是2024-03-06 21:20:50.839 INSERT INTO psi_io_balance ( id, as_id, bill_date, order_id, busi_type, direction, c…

5. gin集成Gorm

文章目录 一&#xff1a;连接DB二&#xff1a;增删改查三&#xff1a;使用PostMan测试 代码地址&#xff1a;https://gitee.com/lymgoforIT/golang-trick/tree/master/24-gin-learning 本节主要介绍如何使用gin集成gorm&#xff0c;并完成用户的创建、修改、删除、查询等功能 …

使用Http请求下载文件带来的问题

java.io.IOException: Broken pipe 当使用http请求的方式将文件作为响应内容给浏览器&#xff0c;这个时候如果浏览器未开启自动下载(浏览器可能会终止这个tcp连接)&#xff0c;文件不会下载成功&#xff0c;但是这个时候请求已经到达服务器&#xff0c;如果这个时候&#xff0…

《Vite 报错》ReferenceError: module is not defined in ES module scope

ReferenceError: module is not defined in ES module scope 解决方案 postcss.config.js 要改为 postcss.config.cjs&#xff0c;也就是 .cjs 后缀。 原因解析 下图提示&#xff0c;packages.json 中的属性 type 设置为 module。所有 *.js 文件现在都被解释为 ESM&#xff…

数据结构(七)——线性表的基本操作

&#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609; 在csdn获奖荣誉: &#x1f3c6;csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ …

vscode c/c++ 检测到 #include 错误。请更新 includePath。

问题背景 使用vscode打开项目后&#xff0c;头文件显示红色波浪线&#xff0c;没有引入。 检测到 #include 错误。请更新 includePath。已为此翻译单元(xxx)禁用波形曲线。 解决方法 gcc -v -E -x c - 显示所有头文件路径。 打开c_cpp_properties.json文件&#xff0c;粘贴…

python+django+vue电影票订购系统dyvv4

电影院订票信息管理系统综合网络空间开发设计要求。目的是将电影院订票通过网络平台将传统管理方式转换为在网上操作&#xff0c;方便快捷、安全性高、交易规范做了保障&#xff0c;目标明确。电影院订票信息管理系统可以将功能划分为用户和管理员功能[10]。 语言&#xff1a;…

基于springboot+vue的疾病防控综合系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

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

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

three.js如何实现简易3D机房?(二)模型加载的过渡动画

接上一篇&#xff1a; three.js如何实现简易3D机房&#xff1f;&#xff08;一&#xff09;基础准备-下&#xff1a;http://t.csdnimg.cn/TTI1P 目录 六、自定义过渡动画 1.过渡动画组件 2.模型加载时使用 根据模型大小&#xff0c;可以自定义模型加载的过渡动画效果&am…

某多多anti_token(先水个文后续会完善)第一部分

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018…

【PCL】(二十一)圆柱体模型分割点云

&#xff08;二十一&#xff09;圆柱体模型分割点云 以下代码实现使用平面和圆柱形模型对点云进行采样一致性分割。 cylinder_segmentation.cpp #include <pcl/ModelCoefficients.h> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include &…