亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java 字符串:创建、方法与最佳实践

Java 字符串

本教程通过示例讲解 Java 字符串、如何创建以及 String 类的各种方法。

Java 中字符串是字符序列。例如,"hello" 是包含字符 'h'、'e'、'l'、'l'、'o' 的字符串。

Java 用 双引号 表示字符串。例如:

// 创建字符串
String type = "Java programming";

此处创建名为 type 的字符串变量,初始化为 Java Programming。


示例:在 Java 中创建字符串

class Main {
    public static void main(String[] args) {
        // 创建字符串
        String first = "Java";
        String second = "Python";
        String third = "JavaScript";
        // 打印字符串
        System.out.println(first); // 打印 Java
        System.out.println(second); // 打印 Python
        System.out.println(third); // 打印 JavaScript
    }
}

上例创建三个字符串 first、second、third。此处像基本类型一样直接创建字符串。

但还有另一种创建 Java 字符串的方式 (使用 new 关键字)。稍后讲解。

注意:Java 中字符串不是基本类型 (如 int、char 等)。所有字符串都是预定义类 String 的对象。

所有字符串变量都是 String 类的实例。


Java 字符串操作

Java String 提供各种方法执行字符串操作。我们看一些常用操作。

1. 获取字符串长度

获取字符串长度用 String 的 length() 方法。例如:

class Main {
    public static void main(String[] args) {
        // 创建字符串
        String greet = "Hello! World";
        System.out.println("String: " + greet);
        // 获取 greet 长度
        int length = greet.length();
        System.out.println("Length: " + length);
    }
}

输出


String: Hello! World
Length: 12

上例中 length() 计算字符串总字符数并返回。详见 Java String length()。


2. 连接两个 Java 字符串

Java 中可用 concat() 方法连接两个字符串。例如:

class Main {
    public static void main(String[] args) {
        // 创建第一个字符串
        String first = "Java ";
        System.out.println("First String: " + first);
        // 创建第二个字符串
        String second = "Programming";
        System.out.println("Second String: " + second);
        // 连接两个字符串
        String joinedString = first.concat(second);
        System.out.println("Joined String: " + joinedString);
    }
}

输出


First String: Java
Second String: Programming
Joined String: Java Programming

上例创建 first 和 second 两个字符串。注意语句:

String joinedString = first.concat(second);

此处 concat() 将 second 连接到 first 并赋给 joinedString。

也可用 + 运算符连接字符串。详见 Java String concat()。


3. 比较两个字符串

Java 中可用 equals() 方法比较两个字符串。例如:

class Main {
    public static void main(String[] args) {
        // 创建 3 个字符串
        String first = "java programming";
        String second = "java programming";
        String third = "python programming";
        // 比较 first 和 second
        boolean result1 = first.equals(second);
        System.out.println("Strings first and second are equal: " + result1);
        // 比较 first 和 third
        boolean result2 = first.equals(third);
        System.out.println("Strings first and third are equal: " + result2);
    }
}

输出


Strings first and second are equal: true
Strings first and third are equal: false

上例创建 first、second、third 三个字符串。使用 equals() 检查字符串是否相等。

equals() 比较时检查字符串内容。详见 Java String equals()。

注意:也可用 == 运算符比较字符串。但这与 equals() 方法不同。详见 Java String == vs equals()。


Java 字符串中的转义字符

转义字符用于转义字符串内的某些字符。

假设需要在字符串中包含双引号。

// 包含双引号
String example = "This is the "String" class";

因字符串用 双引号 表示,编译器会将 "This is the " 视为字符串。上述代码会报错。

解决方法:在 Java 中使用转义字符 \。例如:

// 使用转义字符
String example = "This is the \"String\" class.";

转义字符告诉编译器转义 双引号 并读取整个文本。


Java 字符串不可变

Java 中字符串 不可变。即一旦创建字符串,无法改变该字符串。

深入理解请看示例:

// 创建字符串
String example = "Hello! ";

此处创建字符串变量 example,持有字符串 "Hello! "。

假设想修改字符串。

// 添加另一个字符串 "World"
// 到前一个字符串
example = example.concat(" World");

此处用 concat() 将另一个字符串 World 加到前一个字符串。

看似改变了前一个字符串的值。但这 true。

看看实际发生了什么:

  1. JVM 取第一个字符串 "Hello! "
  2. 创建新字符串,将 "World" 加到第一个字符串
  3. 将新字符串 "Hello! World" 赋给 example 变量
  4. 第一个字符串 "Hello! " 保持不变

使用 new 关键字创建字符串

目前我们像基本类型一样创建字符串。

因 Java 字符串是对象,也可用 new 关键字创建。例如:

// 使用 new 关键字创建字符串
String name = new String("Java String");

上例用 new 关键字创建字符串 name。

创建字符串对象时,调用 String() 构造器。详见 Java 构造器。

注意:String 类提供其他各种构造器创建字符串。详见 Java String (官方 Java 文档)。


示例:使用 new 关键字创建 Java 字符串

class Main {
    public static void main(String[] args) {
        // 使用 new 创建字符串
        String name = new String("Java String");
        System.out.println(name); // 打印 Java String
    }
}

字面量 vs new 关键字创建字符串

既知字面量和 new 关键字两种创建方式,看主要区别。

Java 中 JVM 维护 字符串池 在内存中存储所有字符串。字符串池助于复用字符串。

1. 使用字面量创建字符串时,

String example = "Java";

此处直接提供字符串值 (Java)。编译器先检查字符串池中是否已存在该字符串。

2. 使用 new 关键字创建字符串时,

String example = new String("Java");

此处不直接提供字符串值。故即使内存池已有 "Java",也会创建新的 "Java" 字符串。


Java String 方法

除上述方法外,Java 还有各种字符串方法。以下列出部分方法:

方法描述
contains()检查字符串是否包含子串
substring()返回字符串的子串
join()用分隔符连接给定字符串
replace()用指定新字符替换指定旧字符
replaceAll()替换所有匹配正则模式的子串
replaceFirst()替换首个匹配子串
charAt()返回指定位置的字符
getBytes()将字符串转为字节数组
indexOf()返回字符串中指定字符的位置
compareTo()按字典序比较两个字符串
compareToIgnoreCase()忽略大小写按字典序比较
trim()移除首尾空白字符
format()返回格式化字符串
split()将字符串拆分为字符串数组
toLowerCase()转为小写
toUpperCase()转为大写
valueOf()返回指定参数的字符串表示
toCharArray()转为 char 数组
matches()检查字符串是否匹配给定正则
startsWith()检查字符串是否以给定字符串开头
endsWith()检查字符串是否以给定字符串结尾
isEmpty()检查字符串是否为空
intern()返回字符串的规范表示
contentEquals()检查字符串是否等于 charSequence
hashCode()返回字符串的哈希码
subSequence()从字符串返回子序列

java

  1. 掌握 C# 字符串:基础、操作与进阶技巧完全指南
  2. 精通 Java 运算符:类型、语法与实战示例
  3. 精通 Java 接口:概念、实现与最佳实践
  4. 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
  5. 精通 Java Try-With-Resources:自动资源管理详解
  6. Java 注解详解:类型、放置位置与实战示例
  7. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  8. 精通 Java String.endsWith():检查字符串后缀(示例)
  9. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解
  10. Java String toLowerCase() 与 toUpperCase():区域感知的大小写转换
  11. Java 中 char 与 String 相互转换:实用示例与最佳实践
  12. Java 递归反转字符串:原理、代码实现与性能分析