简介
在这个实验中,你将学习如何在 Java 中使用 startsWith()
方法来检查一个字符串是否以特定的前缀开头。这个实践练习将指导你应用 startsWith()
方法,在不同的情况下测试其行为,并理解它如何处理 null 和空前缀。在这个实验结束时,你将熟练掌握这一基本的字符串操作技术。
在这个实验中,你将学习如何在 Java 中使用 startsWith()
方法来检查一个字符串是否以特定的前缀开头。这个实践练习将指导你应用 startsWith()
方法,在不同的情况下测试其行为,并理解它如何处理 null 和空前缀。在这个实验结束时,你将熟练掌握这一基本的字符串操作技术。
在这一步中,你将学习如何在 Java 中使用 startsWith()
方法来检查一个字符串是否以特定的前缀开头。当你需要根据文本的开头来处理文本时,这是一个常见的操作。
startsWith()
方法是 Java 中 String
类的一部分。它接受一个 String
类型的参数,该参数就是你要检查的前缀。如果字符串以指定的前缀开头,该方法返回 true
,否则返回 false
。
让我们创建一个新的 Java 文件来练习使用 startsWith()
方法。
打开 WebIDE 左侧的文件资源管理器。
在 ~/project
目录下右键单击,然后选择“新建文件”。
将新文件命名为 PrefixChecker.java
。
在编辑器中打开 PrefixChecker.java
,并粘贴以下代码:
public class PrefixChecker {
public static void main(String[] args) {
String text = "Hello, Java!";
String prefix = "Hello";
boolean startsWithPrefix = text.startsWith(prefix);
System.out.println("Does the text start with '" + prefix + "'? " + startsWithPrefix);
}
}
在这段代码中:
String
类型的变量 text
,并将其初始化为 "Hello, Java!"。String
类型的变量 prefix
,并将其初始化为 "Hello"。text
字符串上调用 startsWith()
方法,并将 prefix
作为参数传递。结果(true
或 false
)存储在 boolean
类型的变量 startsWithPrefix
中。保存文件(Ctrl+S 或 Cmd+S)。
现在,让我们编译并运行这个程序。打开 WebIDE 底部的终端。确保你位于 ~/project
目录下。
使用 javac
命令编译 Java 文件:
javac PrefixChecker.java
如果没有错误,这个命令将在 ~/project
目录下创建一个 PrefixChecker.class
文件。
使用 java
命令运行编译后的程序:
java PrefixChecker
你应该会看到以下输出:
Does the text start with 'Hello'? true
这个输出证实了字符串 "Hello, Java!" 确实以 "Hello" 为前缀。
在上一步中,你成功使用 startsWith()
方法检查了前缀。现在,让我们探究 startsWith()
方法如何处理不同大小写(大写字母和小写字母)的情况。
默认情况下,startsWith()
方法区分大小写。这意味着 "Hello" 被视为与 "hello" 或 "HELLO" 不同。让我们修改 PrefixChecker.java
文件来实际观察这种情况。
在 WebIDE 编辑器中打开 PrefixChecker.java
文件。
修改 main
方法以包含不同大小写的检查。将现有的 main
方法替换为以下代码:
public class PrefixChecker {
public static void main(String[] args) {
String text = "Hello, Java!";
String prefix1 = "Hello";
String prefix2 = "hello";
String prefix3 = "HELLO";
boolean startsWithPrefix1 = text.startsWith(prefix1);
boolean startsWithPrefix2 = text.startsWith(prefix2);
boolean startsWithPrefix3 = text.startsWith(prefix3);
System.out.println("Does the text start with '" + prefix1 + "'? " + startsWithPrefix1);
System.out.println("Does the text start with '" + prefix2 + "'? " + startsWithPrefix2);
System.out.println("Does the text start with '" + prefix3 + "'? " + startsWithPrefix3);
}
}
在这段更新后的代码中,我们正在检查 text
字符串是否以 "Hello"、"hello" 和 "HELLO" 开头。
保存文件(Ctrl+S 或 Cmd+S)。
打开终端并确保你位于 ~/project
目录下。
编译修改后的 Java 文件:
javac PrefixChecker.java
运行编译后的程序:
java PrefixChecker
你应该会看到以下输出:
Does the text start with 'Hello'? true
Does the text start with 'hello'? false
Does the text start with 'HELLO'? false
这个输出清楚地表明,startsWith()
方法仅对前缀 "Hello"(与原始字符串的大小写匹配)返回 true
,而对 "hello" 和 "HELLO" 返回 false
。这证明了 startsWith()
方法区分大小写。
如果你需要进行不区分大小写的前缀检查,通常会在使用 startsWith()
方法之前,将原始字符串和前缀都转换为相同的大小写(小写或大写)。例如,你可以使用 text.toLowerCase().startsWith(prefix.toLowerCase())
。我们在这里不会实现这一点,但这是一个值得记住的有用技巧。
在这一步中,我们将研究当 startsWith()
方法的前缀为 null
或空字符串(""
)时,该方法的行为。理解这些边界情况对于编写健壮的代码至关重要。
在 WebIDE 编辑器中打开 PrefixChecker.java
文件。
修改 main
方法,以测试 null
前缀和空字符串前缀的情况。将现有的 main
方法替换为以下代码:
public class PrefixChecker {
public static void main(String[] args) {
String text = "Hello, Java!";
String prefixNull = null;
String prefixEmpty = "";
// Check with a null prefix
try {
boolean startsWithPrefixNull = text.startsWith(prefixNull);
System.out.println("Does the text start with null? " + startsWithPrefixNull);
} catch (NullPointerException e) {
System.out.println("Checking with null prefix resulted in: " + e);
}
// Check with an empty prefix
boolean startsWithPrefixEmpty = text.startsWith(prefixEmpty);
System.out.println("Does the text start with an empty string? " + startsWithPrefixEmpty);
}
}
在这段更新后的代码中:
prefixNull
并将其赋值为 null
。prefixEmpty
并将其赋值为空字符串 ""
。prefixNull
进行检查时,我们使用了 try-catch
块。这是因为在 Java 中,尝试对 null
对象调用方法会导致 NullPointerException
。我们捕获这个异常以观察会发生什么。prefixEmpty
进行检查。保存文件(Ctrl+S 或 Cmd+S)。
打开终端并确保你位于 ~/project
目录下。
编译修改后的 Java 文件:
javac PrefixChecker.java
运行编译后的程序:
java PrefixChecker
你应该会看到以下输出:
Checking with null prefix resulted in: java.lang.NullPointerException
Does the text start with an empty string? true
这个输出展示了两个重要的点:
null
作为前缀传递给 startsWith()
方法会导致 NullPointerException
。这就是为什么在对可能为 null
的值调用方法之前,处理这些值至关重要。""
)作为前缀传递给 startsWith()
方法会返回 true
。这是因为任何字符串都可以被认为是以空字符串开头的。理解 startsWith()
方法如何处理 null
和空字符串对于防止错误并在你的 Java 程序中编写正确的逻辑非常重要。
在本次实验中,你学习了如何在 Java 中使用 startsWith()
方法来检查字符串是否以特定前缀开头。你通过创建一个简单的 Java 程序、编译并运行它以查看输出,练习了应用此方法。这项基础技能对于 Java 编程中的各种字符串操作任务至关重要。