C語言中文網 目錄

Java字符串的比較(equals()、equalsIgnoreCase()和compareTo())

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

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo