4.4 String 搜索与比较
字符串是对象,所以比较文本内容时要使用方法。不要用 == 判断两个面向用户的字符串内容是否相同。
java
String a = new String("java");
String b = new String("java");
System.out.println(a == b); // false:不是同一个对象
System.out.println(a.equals(b)); // true:文本内容相同equals(other)
equals(other) 在两个字符串包含完全相同的字符、顺序也相同时返回 true。
java
"Java".equals("Java"); // true
"Java".equals("java"); // false检查密码、命令、菜单选项、精确标签时,通常使用这个方法。
equalsIgnoreCase(other)
equalsIgnoreCase(other) 会忽略大小写差异来比较文本。
java
"YES".equalsIgnoreCase("yes"); // true当你希望接受 yes、YES、Yes 这类命令时,它很有用。
compareTo(other)
compareTo(other) 按类似字典序的规则比较两个字符串。
java
"apple".compareTo("banana"); // 负数
"cat".compareTo("cat"); // 0
"dog".compareTo("cat"); // 正数具体返回多少不重要,重点看符号:
- 负数:左边字符串排在右边之前。
- 零:两个字符串相等。
- 正数:左边字符串排在右边之后。
正在加载交互实验...
正在加载概念检查...
contains(part)
contains(part) 判断某个子串是否出现在字符串内部。
java
"error: timeout".contains("error"); // true它返回布尔值,不返回位置。
startsWith(prefix) 与 endsWith(suffix)
startsWith(prefix) 检查字符串开头。endsWith(suffix) 检查字符串结尾。
java
"Report.java".endsWith(".java"); // true
"Report.java".startsWith("Test"); // false这些方法常用于文件扩展名、命令前缀和简单校验。
indexOf(part) 与 lastIndexOf(part)
indexOf(part) 返回子串第一次出现的位置。如果没有出现,结果是 -1。
java
String line = "error warning error";
System.out.println(line.indexOf("error")); // 0
System.out.println(line.lastIndexOf("error")); // 14
System.out.println(line.indexOf("debug")); // -1只需要判断有没有时,用 contains()。需要知道位置时,用 indexOf()。
正在加载交互实验...
正在加载概念检查...
正在加载概念检查...
正在加载本节练习...