Java 中的String 类旨在处理 Java 中的字符串。Java 程序中定义的所有字符串文字(例如“abc”)都是 String 类的实例。让我们看看它的主要特征:
- 该类实现
Serializable
和接口CharSequence
。由于它包含在包中java.lang
,因此不需要导入。 - Java 中的String类是最终类,不能有子类。
- String 类是一个不可变类,这意味着它的对象在创建后就无法更改。对 String 对象的任何会产生 String 类对象的操作都会导致创建一个新对象。
- 由于其不变性,String 类对象是线程安全的,可以在多线程环境中使用。
toString
Java中的每个对象都可以通过所有Java类继承自该类的方法转换为字符串Object
。
使用 Java 字符串
这是 Java 中最常用的类之一。它具有分析字符串中某些字符、比较和搜索字符串、提取子字符串、创建所有字符都转换为小写和大写的字符串副本等方法。String类的所有方法的列表可以在官方文档中找到。Java 还实现了一种简单的串联机制(连接字符串),将基元转换为字符串,反之亦然。让我们看一下在 Java 中使用 String 类的一些示例。创建字符串
创建 String 类实例的最简单方法是为其分配字符串文字的值:String s = "I love movies";
但是,String 类有许多构造函数,允许您:
- 创建一个包含空字符串的对象
- 创建字符串变量的副本
- 基于字符数组创建字符串
- 基于字节数组创建字符串(考虑编码)
- ETC。
字符串加法
在 Java 中添加两个字符串非常简单,使用+
. Java 允许您将变量和字符串文字相互添加:
public static void main(String[] args) {
String day = "Day";
String and = "And";
String night = "Night";
String dayAndNight = day + " " + and + " " + night;
}
通过将 String 类的对象与其他类的对象相加,我们将后者简化为字符串形式。将其他类的对象转换为字符串表示形式是通过toString
对象上的隐式方法调用来执行的。让我们通过以下示例来演示这一点:
public class StringExamples {
public static void main(String[] args) {
Human max = new Human("Max");
String out = "java object: " + max;
System.out.println(out);
// Output: Java object: Person named Max
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
字符串比较
要比较字符串,可以使用以下方法equals()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("Test String".equals(x)); // true
}
当比较字符串时大小写对我们来说不重要时,我们需要使用以下方法equalsIgnoreCase()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("test string".equalsIgnoreCase(x)); // true
}
将对象/基元转换为字符串
要将任何 Java 类或任何原始数据类型的实例转换为字符串表示形式,可以使用以下方法String.valueOf()
:
public class StringExamples {
public static void main(String[] args) {
String a = String.valueOf(1);
String b = String.valueOf(12.0D);
String c = String.valueOf(123.4F);
String d = String.valueOf(123456L);
String s = String.valueOf(true);
String human = String.valueOf(new Human("Alex"));
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(s);
System.out.println(human);
/*
Output:
1
12.0
123.4
123456
true
Person named Alex
*/
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
将字符串转换为数字
通常您需要将字符串转换为数字。原始类型包装类具有正是用于此目的的方法。所有这些方法都以单词 parse 开头。考虑下面将字符串转换为整数 (Integer
) 和小数 ( Double
) 的情况:
public static void main(String[] args) {
Integer i = Integer.parseInt("12");
Double d = Double.parseDouble("12.65D");
System.out.println(i); // 12
System.out.println(d); // 12.65
}
将字符串集合转换为字符串表示形式
如果需要通过任意分隔符将某个字符串集合的所有元素转换为字符串表示形式,可以使用 Java String 类的以下方法:join(CharSequence delimiter, CharSequence... elements)
join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
delimiter
是元素分隔符,elements
是字符串数组/字符串集合实例。让我们看一个示例,其中将字符串列表转换为字符串,并用分号分隔每个字符串:
public static void main(String[] args) {
List<String> people = Arrays.asList(
"Philip J. Fry",
"Turanga Leela",
"Bender Bending Rodriguez",
"Hubert Farnsworth",
"Hermes Conrad",
"John D. Zoidberg",
"Amy Wong"
);
String peopleString = String.join("; ", people);
System.out.println(peopleString);
/*
Output:
Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
*/
}
将字符串拆分为字符串数组
该操作由该方法执行。split(String regex)
分隔符是一个字符串正则表达式regex
。在下面的示例中,我们将执行与上一个示例中执行的操作相反的操作:
public static void main(String[] args) {
String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";
String[] peopleArray = people.split("; ");
for (String human : peopleArray) {
System.out.println(human);
}
/*
Output:
Philip J. Fry
Turanga Leela
Bender Bending Rodriguez
Hubert Farnsworth
Hermes Conrad
John D. Zoidberg
Amy Wong
*/
}
确定行中元素的位置
在Java语言中,String提供了一组方法来确定字符串中字符/子字符串的位置:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— 您正在寻找的符号 (char
)str
- 搜索字符串fromIndex
— 搜索元素的位置- 方法
indexOf
- 返回找到的第一个元素的位置 - 方法
lastIndexOf
- 返回找到的最后一个元素的位置
A
, K
, Z
,的序列号Я
,但请记住,Java 中字符串中的字符索引是从零开始的:
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(alphabet.indexOf('A')); // 0
System.out.println(alphabet.indexOf('K')); // 10
System.out.println(alphabet.indexOf('Z')); // 25
System.out.println(alphabet.indexOf('Я')); // -1
}
从字符串中提取子字符串
为了从字符串中提取子字符串,Java中的String类提供了方法:substring(int beginIndex)
substring(int beginIndex, int endIndex)
public static void main(String[] args) {
String filePath = "D:\\Movies\\Futurama.mp4";
int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
String fileName = filePath.substring(lastFileSeparatorIndex + 1);
System.out.println(fileName); //9
}
将字符串转换为大写/小写:
String 类提供了将字符串转换为大写和小写的方法:toLowerCase()
toUpperCase()
public static void main(String[] args) {
String fry = "Philip J. Fry";
String lowerCaseFry = fry.toLowerCase();
String upperCaseFry = fry.toUpperCase();
System.out.println(lowerCaseFry); // philip j. fry
System.out.println(upperCaseFry); // PHILIP J. FRY
}
JavaRush 在线课程的初级阶段研究了如何使用该 Java 类:
- Java 语法任务的第 1 级第 4 讲中介绍了字符串
- Java多线程任务第二讲第三讲,学习String的内部结构、子串方法
- 在 Java 多线程任务的第二级第四讲中研究了查找、获取、删除字符串中的子字符串
- Java 多线程任务的第 2 级第 6 讲中介绍了String.format 方法
其他来源
JavaRush 社区的其他文章中也提供了有关 String 类的信息:- Java 中的字符串- 本文介绍了在 Java 中使用字符串的一些基础知识。
- Java 字符串。面试问题和答案,第 1 部分- 本文讨论有关该主题的面试问题
String
,并提供问题的答案以及解释和代码示例。 - Java 中的字符串(类 java.lang.String) - 本文对 String 类进行了更深入的分析,并讨论了使用此类的复杂性。
GO TO FULL VERSION