首页 > 编程语言 >Java API 之 String类详解(掌握字符串操作的利器)

Java API 之 String类详解(掌握字符串操作的利器)

时间:2024-09-10 22:24:25浏览次数:14  
标签:Java String println API str 字符串 World Hello

深入剖析 Java String 类:掌握字符串操作的艺术

String 类是 Java 中最基础、最常用的类之一,它用于表示文本字符串。String 类提供了丰富的 API,可以用来操作字符串,例如连接、分割、查找、替换等。

本篇博客将深入剖析 String 类,并通过详细的代码示例展示其所有常用方法的用途,让你真正掌握字符串操作的艺术。

1. 创建字符串对象

String str1 = "Hello"; // 使用字面量创建字符串对象
String str2 = new String("World"); // 使用构造函数创建字符串对象
  • 字面量创建: 直接使用双引号括起来的字符串字面量创建字符串对象,这是最常用的方式。

  • 构造函数创建: 使用 new String() 构造函数创建字符串对象,可以指定字符串内容。

2. 获取字符串长度

String str = "Hello World!";
int length = str.length(); // 返回字符串长度,结果为 12
System.out.println("字符串长度为:" + length);
  • length() 方法返回字符串中字符的个数。

3. 连接字符串

String str1 = "Hello";
String str2 = "World";

// 使用 + 运算符连接字符串
String str3 = str1 + " " + str2;
System.out.println(str3); // 输出结果为 "Hello World"

// 使用 join() 方法连接字符串
String str4 = String.join(" ", str1, str2);
System.out.println(str4); // 输出结果为 "Hello World"

// 使用 format() 方法连接字符串
String str5 = String.format("%s %s", str1, str2);
System.out.println(str5); // 输出结果为 "Hello World"
  • + 运算符: 最简单直接的连接方式,可以连接多个字符串。

  • join() 方法: 可以指定分隔符连接多个字符串,更灵活。

  • format() 方法: 可以使用占位符格式化字符串,更强大。

4. 访问单个字符

String str = "Hello";
char ch = str.charAt(1); // 返回字符串第二个字符,结果为 'e'
System.out.println(ch);

// 访问字符串中每个字符
for (int i = 0; i < str.length(); i++) {
    System.out.println("第 " + (i + 1) + " 个字符是:" + str.charAt(i));
}
  • charAt(int index) 方法返回指定位置的字符。

5. 查找子字符串

String str = "Hello World!";

int index1 = str.indexOf("World"); // 返回子字符串 "World" 在字符串中的第一个出现位置,结果为 6
System.out.println("World 在字符串中的位置:" + index1);

int index2 = str.lastIndexOf("l"); // 返回子字符串 "l" 在字符串中的最后一个出现位置,结果为 9
System.out.println("最后一个 'l' 的位置:" + index2);
  • indexOf(String str) 方法返回指定子字符串在字符串中第一次出现的位置。

  • lastIndexOf(String str) 方法返回指定子字符串在字符串中最后一次出现的位置。

6. 替换子字符串

String str = "Hello World!";
String newStr = str.replace("World", "Java"); // 将字符串中的 "World" 替换为 "Java",结果为 "Hello Java!"
System.out.println(newStr);

String str2 = "Hello World! World!";
String newStr2 = str2.replaceAll("World", "Java"); // 将所有 "World" 替换为 "Java",结果为 "Hello Java! Java!"
System.out.println(newStr2);
  • replace(CharSequence target, CharSequence replacement) 方法将所有出现的目标字符串替换为指定字符串。

  • replaceAll(String regex, String replacement) 方法使用正则表达式替换字符串。

7. 比较字符串

String str1 = "Hello";
String str2 = "hello";

boolean isEqual = str1.equals(str2); // 比较两个字符串是否相等,结果为 false
System.out.println("str1 和 str2 是否相等:" + isEqual);

boolean isEqualIgnoreCase = str1.equalsIgnoreCase(str2); // 忽略大小写比较两个字符串是否相等,结果为 true
System.out.println("忽略大小写比较 str1 和 str2 是否相等:" + isEqualIgnoreCase);
  • equals(Object obj) 方法比较两个字符串是否相等。

  • equalsIgnoreCase(String anotherString) 方法忽略大小写比较两个字符串是否相等。

8. 提取子字符串

String str = "Hello World!";
String subStr = str.substring(6); // 提取字符串从索引 6 开始到结尾的子字符串,结果为 "World!"
System.out.println(subStr);

String subStr2 = str.substring(0, 5); // 提取字符串从索引 0 到 4 的子字符串,结果为 "Hello"
System.out.println(subStr2);
  • substring(int beginIndex) 方法提取从指定位置开始到字符串结尾的子字符串。

  • substring(int beginIndex, int endIndex) 方法提取从指定开始位置到结束位置的子字符串。

9. 将字符串转换为其他数据类型

String str = "123";
int num = Integer.parseInt(str); // 将字符串 "123" 转换为整数 123
System.out.println(num);

String str2 = "3.14";
double d = Double.parseDouble(str2); // 将字符串 "3.14" 转换为双精度浮点数 3.14
System.out.println(d);
  • Integer.parseInt(String s) 将字符串转换为整数。

  • Double.parseDouble(String s) 将字符串转换为双精度浮点数。

10. 将其他数据类型转换为字符串

int num = 123;
String str = String.valueOf(num); // 将整数 123 转换为字符串 "123"
System.out.println(str);

double d = 3.14;
String str2 = String.valueOf(d); // 将双精度浮点数 3.14 转换为字符串 "3.14"
System.out.println(str2);
  • String.valueOf(int i) 将整数转换为字符串。

  • String.valueOf(double d) 将双精度浮点数转换为字符串。

11. 移除字符串首尾空格

String str = "  Hello World!  ";
String trimmedStr = str.trim(); // 移除字符串首尾空格,结果为 "Hello World!"
System.out.println(trimmedStr);
  • trim() 方法移除字符串首尾空格。

12. 将字符串转换为字符数组

String str = "Hello";
char[] chars = str.toCharArray(); // 将字符串 "Hello" 转换为字符数组
for (char c : chars) {
    System.out.println(c);
}
  • toCharArray() 方法将字符串转换为字符数组。

13. 判断字符串是否为空

String str1 = "Hello";
String str2 = "";

boolean isEmpty1 = str1.isEmpty(); // 判断字符串是否为空,结果为 false
System.out.println("str1 是否为空:" + isEmpty1);

boolean isEmpty2 = str2.isEmpty(); // 判断字符串是否为空,结果为 true
System.out.println("str2 是否为空:" + isEmpty2);
  • isEmpty() 方法判断字符串是否为空。

14. 将字符串转换为大写

String str = "Hello World!";
String upperStr = str.toUpperCase(); // 将字符串转换为大写,结果为 "HELLO WORLD!"
System.out.println(upperStr);
  • toUpperCase() 方法将字符串中的所有字符转换为大写。

15. 将字符串转换为小写

String str = "Hello World!";
String lowerStr = str.toLowerCase(); // 将字符串转换为小写,结果为 "hello world!"
System.out.println(lowerStr);
  • toLowerCase() 方法将字符串中的所有字符转换为小写。

16. 判断字符串是否以指定字符串开头

String str = "Hello World!";
boolean startsWithHello = str.startsWith("Hello"); // 判断字符串是否以 "Hello" 开头,结果为 true
System.out.println("str 以 'Hello' 开头吗?" + startsWithHello);
  • startsWith(String prefix) 方法判断字符串是否以指定字符串开头。

17. 判断字符串是否以指定字符串结尾

String str = "Hello World!";
boolean endsWithWorld = str.endsWith("World!"); // 判断字符串是否以 "World!" 结尾,结果为 true
System.out.println("str 以 'World!' 结尾吗?" + endsWithWorld);
  • endsWith(String suffix) 方法判断字符串是否以指定字符串结尾。

18. 判断字符串是否包含指定字符串

String str = "Hello World!";
boolean containsWorld = str.contains("World"); // 判断字符串是否包含 "World",结果为 true
System.out.println("str 包含 'World' 吗?" + containsWorld);
  • contains(CharSequence s) 方法判断字符串是否包含指定字符串。

结语:希望以上知识点能够帮助各位看官更好地理解和使用 String 类,多加练习,毕竟String类是Java当中比较重要的工具,感谢各位看官,下期见,谢谢~

 

标签:Java,String,println,API,str,字符串,World,Hello
From: https://blog.csdn.net/weixin_64178283/article/details/142110461

相关文章

  • 高级java每日一道面试题-2024年9月06日-基础篇-Java中的PO、VO、BO、DO、DAO、DTO、PO
    如果有遗漏,评论区告诉我进行补充面试官:Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思?我回答:PO持久化对象(PersistentObject)PO是持久化对象,用于表示数据库中的实体或表的映射通常与数据库表的结构和字段对应PO的属性对应数据库表的字段,可以进行持久化操作(新......
  • C#中的string和stringbuild
    C#中的string在C#中,字符串是一种非常常用的数据类型,用于表示文本信息。C#中的字符串是通过System.String类实现的,它是.NETFramework类库中System命名空间下的一个类。以下是一些关于C#字符串的重要特性和常用操作:字符串的特性不可变性:C#中的字符串是不可变的......
  • 为什么Java已经不推荐使用Stack了?
    为什么不推荐使用StackJava已不推荐使用Stack,而是推荐使用更高效的ArrayDeque为什么不推荐使用性能低:是因为Stack继承自Vector,而Vector在每个方法中都加了锁。由于需要兼容老的项目,很难在原有的基础上进行优化,因此Vector就被淘汰掉了,使用ArrayList和CopyOnWriteAr......
  • 自学JavaDay7
    面向对象类与对象类    现实世界中如果事物与事物有共同特征,那么我们就把他们称之为一类,比如鱼类,运动类,电竞类等等。类是人类大脑思考总结出的一个模板,是一个抽象的概念。一个事物都应该具备状态和行为,比如学生,状态包括性别,年龄等等行为包括学习,跑步等等   ......
  • JavaScript语法入门四
    变量变量就是在内存中开辟一块用于存储信息的空间。变量命名1.        变量名称必须仅包含字母,数字,符号 $ 和 _。2.        首字符必须非数字。3.        采用驼峰式命名法(camelCase),就是,单词一个接一个,除了第一个单词,其他的每个单词都以大写字母开头......
  • [Java并发]线程安全的List
    线程安全的List目前比较常用的构建线程安全的List有三种方法:使用Vector容器使用Collections的静态方法synchronizedList(List<T>list)采用CopyOnWriteArrayList容器使用Vector容器Vector类实现了可扩展的对象数组,并且它是线程安全的。它和ArrayList在常用方法的实现上很......
  • Java集合——Queue详解
    Queue详解基本概念功能分类主要方法普通队列双端队列阻塞队列使用示例总结基本概念Java中的Queue接口表示一种先进先出(FIFO,FirstInFirstOut)的数据结构,但实际上它也支持其他插入和删除策略。Queue是Java集合框架的一部分,它继承自Collection接口,并且定义......
  • java毕业设计-基于springboot+vue的校园大学生兼职系统设计和实现,基于springboot的大
    博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • [COCI2019-2020#5] Zapina
    [COCI2019-2020#5]Zapina题意有\(n\)个不同的人和\(n\)道不同的题。第\(i\)个人开心当且仅当他被分配到\(i\)道题。求让至少一个人开心的分配方案数。、思路1定义\(dp_{i,j}\)表示前\(i\)个人发\(j\)道题,没人开心的方案数。答案等于\(n^n-dp_{n,n}\)。\[d......
  • 【待做】【JavaWeb】HTTP、Tomcat、Servlet
    一、JavaWeb框架及HTTP介绍二、IDEA+Tomcat集成快速构建JavaWeb项目2.1快速构建JavaWeb项目2.2IDEA集成本地Tomcat2.3IDEA配置Tomcat的Maven插件2.4项目打包后的目录结构三、Servlet执行流程及生命周期介绍3.1Servlet介绍及写个接口3.2Se......