日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

實現(xiàn)兩個字符串的比較 兩個字符串比較是否相等( 二 )

在上述代碼中,由于使用equalsIgnoreCase()方法進行比較,所以會忽略大小寫判斷 。因此輸入ADMIN和SOMBOY也會驗證通過,如下所示:
歡迎進入《學(xué)生信息管理》系統(tǒng)請輸入管理員名稱:ADMIN請輸入管理員密碼:SOMBOY登錄成功 。123456復(fù)制代碼類型:[java]否則輸出結(jié)果如下所示:
歡迎進入《學(xué)生信息管理》系統(tǒng)請輸入管理員名稱:admin請輸入管理員密碼:sommboy登錄失敗 。123456復(fù)制代碼類型:[java]equals()與==的比較理解equals()方法和==運算符執(zhí)行的是兩個不同的操作是重要的 。如同剛才解釋的那樣,equals()方法比較字符串對象中的字符 。而==運算符比較兩個對象引用看它們是否引用相同的實例 。
下面的程序說明了兩個不同的字符串(String)對象是如何能夠包含相同字符的,但同時這些對象引用是不相等的:
String s1 = "Hello";String s2 = new String(s1);System.out.println(s1.equals(s2)); // 輸出trueSystem.out.println(s1 == s2); // 輸出false1234復(fù)制代碼類型:[java]變量s1指向由“Hello”創(chuàng)建的字符串實例 。s2所指的的對象是以s1作為初始化而創(chuàng)建的 。因此這兩個字符串對象的內(nèi)容是一樣的 。但它們是不同的對象,這就意味著s1和s2沒有指向同一的對象,因此它們是不==的 。
因此,千萬不要使用==運算符測試字符串的相等性,以免在程序中出現(xiàn)糟糕的bug 。從表面上看,這種bug很像隨機產(chǎn)生的間歇性錯誤 。
對于習(xí)慣使用C++的String類的人來說,在進行相等性檢測的時候一定要特別小心 。C++的String類重載了==運算符以便檢測字符串內(nèi)容的相等性 ??上ava沒有采用這種方式,它的字符串“看起來、感覺起來”與數(shù)值一樣,但進行相等性測試時,其操作方式又類似于指針 。語言的設(shè)計者本應(yīng)該像對C++那樣也進行特殊處理,即重定義==運算符 。
當(dāng)然,每一種語言都會存在一些不太一致的地方 。C程序員從不使用==對字符串進行比較,而使用strcmp函數(shù) 。Java的compareTo方法與strcmp完全類似 。所以下面我們來介紹Java的compareTo方法 。
compareTo()方法通常,僅僅知道兩個字符串是否相同是不夠的 。對于排序應(yīng)用來說,必須知道一個字符串是大于、等于還是小于另一個 。一個字符串小于另一個指的是它在字典中先出現(xiàn) 。而一個字符串大于另一個指的是它在字典中后出現(xiàn) 。字符串(String)的compareTo()方法實現(xiàn)了這種功能 。
compareTo()方法用于按字典順序比較兩個字符串的大小,該比較是基于字符串各個字符的Unicode值 。compareTo()方法的語法格式如下:
str.compareTo(String otherstr);1復(fù)制代碼類型:[java]它會按字典順序?qū)tr表示的字符序列與otherstr參數(shù)表示的字符序列進行比較 。如果按字典順序str位于otherster參數(shù)之前,比較結(jié)果為一個負(fù)整數(shù);如果str位于otherstr之后,比較結(jié)果為一個正整數(shù);如果兩個字符串相等,則結(jié)果為0 。
提示:如果兩個字符串調(diào)用equals()方法返回true,那么調(diào)用compareTo()方法會返回0 。
例3編寫一個簡單的Java程序,演示compareTo()方法比較字符串的用法,以及返回值的區(qū)別 。代碼如下:
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)的結(jié)果是:" + str.compareTo(str1));System.out.println("str1.compareTo(str)的結(jié)果是:" + str1.compareTo(str));System.out.println("str1.compareTo('a')的結(jié)果是:" + str1.compareTo("a"));}123456789復(fù)制代碼類型:[java]上述代碼定義了兩個字符串“A”和“a”,然后調(diào)用compareTo()方法進行相互比較 。最后一行代碼拿“a”與“a”進行比較,由于兩個字符串相同比較結(jié)果為0 。運行后的輸出結(jié)果如下:

推薦閱讀