在 Java 中,比較字串的常用方法有 3 個:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面詳細介紹這 3 個方法的使用。
equals() 方法
equals() 方法將逐個地比較兩個字串的每個字元是否相同。對於字元的大小寫,也在檢查的範圍之內。equals() 方法的語法格式如下:
字串1.equals(字串2);
例如:
String str1="abc";
String str2=new String("abc");
String str3="ABC";
System.out.println(str1.equals(str2)); //輸出 true
System.out.println(str1.equals(str3)); //輸出 false
例 1
在第一次進入系統時要求管理員設定一個密碼,出於安全考慮密碼需要輸入兩次,如果兩次輸入的密碼一致才生效,否則提示失敗。具體實現程式碼如下:
import java.utii.Scanner; public class Testl2
{
public static void main(String[] args)
{
String sys="學生資訊管理";
System.out.println("歡迎進入《"+sys+"》系統");
System.out.println("請設定一個管理員密碼:");
Scanner input=new Scanner(System.in);
String pass=input.next(); //設定密碼
System.out.println("重複管理員密碼:");
input=new Scanner(System.in);
String pass1=input.next(); //確認密碼
if(pass.equals(pass1))
{ //比較兩個密碼
System.out.println("已生效,請牢記密碼:"+ pass);
}
else
{
System.out.println("兩次密碼不一致,請重新設定。");
}
}
}
執行該程式,由於 equals() 方法區分大小寫,所以當兩次輸入的密碼完全一致時,equals() 方法返回 true,輸出結果如下所示:
歡迎進入《學生資訊管理》系統
請設定一個管理員密碼:
abcdef
重複管理員密碼:
abcdef
已生效,請牢記密碼:abcdef
否則輸出如圖下所示的結果:
歡迎進入《學生資訊管理》系統
請設定一個管理員密碼:
abcdef
重複管理員密碼:
aBcdef
兩次密碼不一致,請重新設定。
equalsIgnoreCase() 方法
equalsIgnoreCase() 方法的作用和語法與 equals() 方法完全相同,唯一不同的是
equalsIgnoreCase() 比較時不區分大小寫。例如:
String str1="abc";
String str2="ABC";
System.out.println(str1.equalsIgnoreCase(str2)); //輸出 true
例 2
在會員系統中需要輸入使用者名稱和密碼進行檢驗,下面使用 equalsIgnoreCase() 方法實現檢驗登入時不區分使用者名稱和密碼的大小寫,具體的程式碼實現如下所示。
public static void main(String[] args)
{
String sys="學生資訊管理";
System.out.println("歡迎進入《"+sys+"》系統");
System.out.println("請輸入管理員名稱:");
Scanner input=new Scanner(System.in);
String name=input.next(); //獲取使用者輸入的名稱
System.out.println("請輸入管理員密碼:");
input=new Scanner(System.in);
String pass=input.next(); //獲取使用者輸入的密碼
//比較使用者名稱與密碼,注意此處忽略大小寫
if(name.equalsIgnoreCase("admin")&&pass.equalsIgnoreCase("somboy"))
{ //驗證
System.out.println("登入成功。");
}
else
{
System.out.println("登入失敗。");
}
}
在上述程式碼中,由於使用 equalsIgnoreCase() 方法進行比較,所以會忽略大小寫判斷。因此輸入 ADMIN 和 SOMBOY 也會驗證通過,如下所示:
歡迎進入《學生資訊管理》系統
請輸入管理員名稱:
ADMIN
請輸入管理員密碼:
SOMBOY
登入成功。
否則輸出結果如下所示:
歡迎進入《學生資訊管理》系統
請輸入管理員名稱:
admin
請輸入管理員密碼:
sommboy
登入失敗。
compareTo() 方法
compareTo() 方法用於按字典順序比較兩個字串的大小,該比較是基於字串各個字元的 Unicode 值。compareTo() 方法的語法格式如下:
str.compareTo(String otherstr);
它會按字典順序將 str 表示的字元序列與 otherstr 參數列示的字元序列進行比較。
如果按字典順序 str 位於 otherster 引數之前,比較結果為一個負整數;如果 str 位於 otherstr 之後,比較結果為一個正整數;如果兩個字串相等,則結果為 0。
提示:如果兩個字串呼叫 equals() 方法返回 true,那麼呼叫 compareTo() 方法會返回 0。
例 3
編寫一個簡單的 Java 程式,演示 compareTo() 方法比較字串的用法,以及返回值的區別。程式碼如下:
public static void main(String[] args)
{
String str="A";
String str1="a";
System.out.println("str="+str);
System.out.println("str1="+str1);
System.out.println("str.compareTo(str1)的結果是:"+str.compareTo(str1));
System.out.println("str1.compareTo(str)的結果是:"+str1.compareTo(str));
System.out.println("str1.compareTo('a')的結果是:"+str1.compareTo("a"));
}
上述程式碼定義了兩個字串"A"和"a", 然後呼叫 compareTo() 方法進行相互比較。最後一行程式碼拿"a"與"a"進行比較,由於兩個字串相同比較結果為 0。執行後的輸出結果如下:
str=A
str1=a
str.compareTo(str1)的結果是:-32
str1.compareTo(str)的結果是:32
str1.compareTo('a')的結果是:0