博客
关于我
JAVA——从基础学起(三)字符串
阅读量:380 次
发布时间:2019-03-05

本文共 4150 字,大约阅读时间需要 13 分钟。

Java字符串操作指南

1. 基本概念

Java中的字符串是对象类型,属于java.lang.String类。与其他语言的基本数据类型不同,字符串在Java中是对象化的类型,需要使用类方法来进行操作。

2. 字符串创建

2.1 使用双引号创建字符串

字符串在Java中必须使用双引号"包裹,例如:

String str = "Hello World";

2.2 使用构造函数创建字符串

可以使用String类的构造函数来创建字符串对象:

  • String(String source):直接复制源字符串内容的新字符串。
  • String(char[] value):使用字符数组初始化字符串。
  • String(char[] value, int offset, int count):从字符数组中截取一部分创建字符串。
  • String(String format, Object... args):用于格式化字符串。

2.3 注意事项

  • 使用new String("abc")创建的字符串会返回两个对象。
  • 避免使用String类的原始类型进行操作,以防止性能问题。

3. 字符串连接

3.1 使用+运算符

可以使用+运算符连接多个字符串:

String s1 = new String("Hello");
String s2 = new String("World");
String result = s1 + s2; // "HelloWorld"

3.2 格式化连接

对于长字符串,可以分行书写:

String longStr = new String("这是一\n长字符串,\n包含多行内容。");

3.3 与其他数据类型连接

可以将字符串与其他数据类型连接,通过调用toString()方法:

int a = 42;
double b = 3.1416;
String str = new String("结果:") + a + b; // "结果:42.0"

3.4 注意事项

  • 使用+运算符会生成新的字符串对象,可能导致性能问题。
  • 避免频繁连接字符串,建议使用StringBuilderStringBuffer

4. 字符串操作

4.1 获取字符串长度

使用length()方法:

String str = new String("Hello World");
int length = str.length(); // 11

4.2 字符查找

  • indexOf()lastIndexOf():返回子字符串的首次和最后一次出现位置。
  • contains():检查字符串是否包含某个字符或子字符串。

4.3 获取单个字符

使用charAt(int index)方法:

String str = new String("abcde");
char c = str.charAt(2); // 'c'

4.4 截取子字符串

  • substring(int beginIndex):从指定位置截取到末尾。
  • substring(int beginIndex, int endIndex):从指定位置截取到指定位置。

4.5 去空格

使用trim()方法去掉前导和尾部空格:

String str = new String("  Hello World  ");
String trimmedStr = str.trim(); // "Hello World"

4.6 替换字符

使用replace()方法替换字符或子字符串:

String str = new String("Project A");
String newStr = str.replace("r", "R"); // "Project A"

4.7 检查开头和结尾

使用startsWith()endsWith()方法:

String str = new String("bcdefg987654321");
boolean startsWithB = str.startsWith("bc");
boolean endsWith21 = str.endsWith("21");

4.8 比较字符串

使用equals()equalsIgnoreCase()方法:

String str1 = new String("Hello");
String str2 = new String("HELLO");
boolean equals = str1.equals(str2); // false
boolean equalsIgnoreCase = str1.equalsIgnoreCase(str2); // true

4.9 字典序比较

使用compareTo()方法:

String str1 = new String("abc");
String str2 = new String("abd");
int compareResult = str1.compareTo(str2); // -1

4.10 字符大小写转换

使用toLowerCase()toUpperCase()方法:

String str = new String("HeLLo WoRLd");
String lowerStr = str.toLowerCase(); // "hello world"
String upperStr = str.toUpperCase(); // "HELLO WORLD"

5. 字符串分割

使用split()方法:

  • split(String regex):按正则表达式分割字符串。
  • split(String regex, int limit):限制分割次数。

5.1 示例

String ip = new String("192.168.1.1");
String[] parts = ip.split("\\.");
// parts: ["192", "168", "1", "1"]

5.2 多个分隔符

String str = new String("a,b,c,d");
String[] parts = str.split("\\,| ");
// parts: ["a", "b", "c", "d"]

6. 格式化字符串

6.1 使用format()方法

  • 静态方法:String.format(format, args)
  • 实例方法:String.format(format, args)String.format(Locale locale, format, args)

6.2 日期格式化

import java.util.Date;
public class DateFormatter {
public static void main(String[] args) {
Date date = new Date();
String formattedDate = String.format("%tF", date); // "2024-05-20"
System.out.println(formattedDate);
}
}

6.3 常规格式化

public class GeneralFormat {
public static void main(String[] args) {
String formattedInt = String.format("%d", 1000 / 6); // "166"
String formattedBool = String.format("%b", 1 > 2); // "false"
String formattedHex = String.format("%x", 1000); // "3e8"
System.out.println(formattedInt); // 166
System.out.println(formattedBool); // false
System.out.println(formattedHex); // 3e8
}
}

7. 正则表达式

7.1 示例

String emailRegex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
String email = "19980504@xjbsmail.com";
if (email.matches(emailRegex)) {
System.out.println("有效邮箱"); // 有效
} else {
System.out.println("无效邮箱"); // 无效
}

7.2 正则表达式组成

  • \\w:表示非空白字符
  • +:表示一次或多次
  • *:表示零次或多次
  • []:表示字符集合
  • ():表示组
  • {}:表示限定修饰符

8. 字符串生成器

8.1 StringBuilder

  • append():追加字符串或任意类型数据。
  • insert(int index, String value):插入字符串。
  • delete(int start, int end):删除子串。
  • toString():将生成器转换为字符串。

8.2 示例

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World!"); // "Hello World!"
sb.insert(5, "!!!"); // "Hello!!! World!"
sb.delete(4, 7); // "Hell World!"
String finalStr = sb.toString(); // "Hell World!"

通过以上方法,可以高效地进行字符串操作,提升代码性能和可读性。

转载地址:http://ughg.baihongyu.com/

你可能感兴趣的文章
Nginx Location配置总结
查看>>
Nginx log文件写入失败?log文件权限设置问题
查看>>
Nginx Lua install
查看>>
nginx net::ERR_ABORTED 403 (Forbidden)
查看>>
Nginx SSL私有证书自签,且反代80端口
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>
nginx 常用指令配置总结
查看>>