Java 字符串
Java 字符串
在本教程中,我们将通过示例了解 Java 字符串、如何创建字符串以及 String 类的各种方法。
在Java中,字符串是一个字符序列。例如,“你好” 是一个包含一系列字符 'h' 的字符串 , 'e' , 'l' , 'l' , 和 'o' .
我们使用双引号 在 Java 中表示一个字符串。例如,
// create a string
String type = "Java programming";
在这里,我们创建了一个名为 type 的字符串变量 .变量用字符串 Java Programming
初始化 .
示例:在 Java 中创建字符串
class Main {
public static void main(String[] args) {
// create strings
String first = "Java";
String second = "Python";
String third = "JavaScript";
// print strings
System.out.println(first); // print Java
System.out.println(second); // print Python
System.out.println(third); // print JavaScript
}
}
在上面的示例中,我们创建了三个名为 first 的字符串 , 秒 , 和 第三个 .在这里,我们直接创建类似于原始类型的字符串。
但是,还有另一种创建 Java 字符串的方法(使用 new
关键词)。我们将在本教程的后面部分了解这一点。
注意 :Java 中的字符串不是原始类型(如 int
, char
, ETC)。相反,所有字符串都是名为 String
的预定义类的对象 .
而且,所有字符串变量都是 String
的实例 类。
Java 字符串操作
Java String 提供了各种方法来对字符串执行不同的操作。我们将研究一些常用的字符串操作。
1.获取字符串的长度
要查找字符串的长度,我们使用 length()
字符串的方法。例如,
class Main {
public static void main(String[] args) {
// create a string
String greet = "Hello! World";
System.out.println("String: " + greet);
// get the length of greet
int length = greet.length();
System.out.println("Length: " + length);
}
}
输出
String: Hello! World Length: 12
在上面的例子中,length()
方法计算字符串中的字符总数并返回。要了解更多信息,请访问 Java String length()。
2.连接两个 Java 字符串
我们可以使用 concat()
在 Java 中连接两个字符串 方法。例如,
class Main {
public static void main(String[] args) {
// create first string
String first = "Java ";
System.out.println("First String: " + first);
// create second
String second = "Programming";
System.out.println("Second String: " + second);
// join two strings
String joinedString = first.concat(second);
System.out.println("Joined String: " + joinedString);
}
}
输出
First String: Java Second String: Programming Joined String: Java Programming
在上面的示例中,我们创建了两个名为 first 的字符串 和 秒 .注意声明,
String joinedString = first.concat(second);
这里,concat()
方法加入 second first 的字符串 字符串并将其分配给 joinedString 变量。
我们还可以使用 +
连接两个字符串 Java中的运算符。要了解更多信息,请访问 Java String concat()。
3.比较两个字符串
在 Java 中,我们可以使用 equals()
来比较两个字符串 方法。例如,
class Main {
public static void main(String[] args) {
// create 3 strings
String first = "java programming";
String second = "java programming";
String third = "python programming";
// compare first and second strings
boolean result1 = first.equals(second);
System.out.println("Strings first and second are equal: " + result1);
// compare first and third strings
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
在上面的示例中,我们创建了 3 个名为 first 的字符串 , 秒 , 和 第三个 .在这里,我们使用 equal()
检查一个字符串是否等于另一个字符串的方法。
equals()
方法在比较字符串时检查字符串的内容。要了解更多信息,请访问 Java String equals()。
注意 :我们也可以使用 ==
比较两个字符串 Java中的运算符。但是,这种方法不同于 equals()
方法。要了解更多信息,请访问 Java String ==vs equals()。
Java 字符串中的转义字符
转义字符用于转义字符串中存在的一些字符。
假设我们需要在字符串中包含双引号。
// include double quote
String example = "This is the "String" class";
由于字符串由双引号表示 ,编译器会处理 "This is the " 作为字符串。所以上面的代码会报错。
为了解决这个问题,我们使用转义字符 \
在爪哇。例如,
// use the escape character
String example = "This is the \"String\" class.";
现在转义字符告诉编译器转义 双引号 并阅读全文。
Java 字符串是不可变的
在 Java 中,字符串是不可变的 .这意味着,一旦我们创建了一个字符串,就无法更改该字符串。
为了更深入地理解它,考虑一个例子:
// create a string
String example = "Hello! ";
在这里,我们创建了一个名为 example 的字符串变量 .该变量包含字符串 "Hello!" .
现在假设我们要更改字符串。
// add another string "World"
// to the previous tring example
example = example.concat(" World");
在这里,我们使用 concat()
添加另一个字符串 World 的方法 到上一个字符串。
看起来我们能够更改前一个字符串的值。但是,这不是 true
.
让我们看看这里发生了什么,
- JVM 获取第一个字符串 "Hello!"
- 通过添加 "World" 创建一个新字符串 到第一个字符串
- 分配新字符串 "Hello! World" 示例 变量
- 第一个字符串 "Hello!" 保持不变
使用新关键字创建字符串
到目前为止,我们已经在 Java 中创建了类似于原始类型的字符串。
由于 Java 中的字符串是对象,我们可以使用 new
创建字符串 关键字也是。例如,
// create a string using the new keyword
String name = new String("Java String");
在上面的例子中,我们创建了一个字符串 name 使用 new
关键字。
在这里,当我们创建一个字符串对象时,String()
构造函数被调用。要了解有关构造函数的更多信息,请访问 Java 构造函数。
注意 :String
类提供了各种其他构造函数来创建字符串。要了解更多信息,请访问 Java String(Java 官方文档)。
示例:使用 new 关键字创建 Java 字符串
class Main {
public static void main(String[] args) {
// create a string using new
String name = new String("Java String");
System.out.println(name); // print Java String
}
}
使用文字 vs new 关键字创建字符串
现在我们知道了如何使用字符串文字和 new
创建字符串 关键字,让我们看看它们之间的主要区别是什么。
在 Java 中,JVM 维护一个 字符串池 将其所有字符串存储在内存中。字符串池有助于重用字符串。
1. 在使用字符串字面量创建字符串时,
String example = "Java";
在这里,我们直接提供字符串的值 (Java
)。因此,编译器首先检查字符串池,看字符串是否已经存在。
- 如果字符串已经存在 ,不会创建新字符串。相反,新的参考,example 指向已经存在的字符串 (
Java
)。 - 如果字符串不存在 , 新字符串 (
Java
已创建。
2.使用new关键字创建字符串时,
String example = new String("Java");
这里没有直接提供字符串的值。因此,一个新的 "Java"
即使 "Java"
也会创建字符串 已经存在于内存池中。
Java String 的方法
除了上面提到的之外,Java 中还有各种字符串方法。以下是其中一些方法:
方法 | 说明 |
---|---|
包含() | 检查字符串是否包含子字符串 |
substring() | 返回字符串的子字符串 |
加入() | 使用分隔符连接给定的字符串 |
替换() | 用指定的新字符替换指定的旧字符 |
replaceAll() | 替换所有匹配正则表达式模式的子字符串 |
replaceFirst() | 替换第一个匹配的子串 |
charAt() | 返回指定位置的字符 |
getBytes() | 将字符串转换为字节数组 |
indexOf() | 返回指定字符在字符串中的位置 |
compareTo() | 按字典顺序比较两个字符串 |
compareToIgnoreCase() | 比较两个字符串忽略大小写差异 |
修剪() | 删除所有前导和尾随空格 |
格式() | 返回一个格式化的字符串 |
split() | 将字符串分解为字符串数组 |
toLowerCase() | 将字符串转换为小写 |
toUpperCase() | 将字符串转换为大写 |
valueOf() | 返回指定参数的字符串表示 |
toCharArray() | 将字符串转换为 char 数组 |
匹配() | 检查字符串是否匹配给定的正则表达式 |
startsWith() | 检查字符串是否以给定字符串开头 |
endsWith() | 检查字符串是否以给定字符串结尾 |
isEmpty() | 检查字符串是否为空 |
实习生() | 返回字符串的规范表示 |
contentEquals() | 检查字符串是否等于charSequence |
hashCode() | 返回字符串的哈希码 |
subSequence() | 从字符串中返回一个子序列 |
java