簡體   English   中英

比較兩個字符串的Java風格

[英]Comparing Two Strings Java Style

我在閱讀材料中看到了這一點,使您可以使用compareToCaseIgnore(String)比較兩個字符串。

public class CompareWithoutCase
{
   public static void main(String [] args)
   {
        String name1, name2;  // To hold two names

        // Create a Scanner object to read input.
        Scanner keyboard = new Scanner(System.in);

        // Get a name.
        System.out.print("Enter a name: ");
        name1 = keyboard.nextLine();

        // Get another name.
        System.out.print("Enter another name: ");
        name2 = keyboard.nextLine();

        // Compare the names.
        if (name1.compareToIgnoreCase(name2) < 0)
        {
           System.out.println(name1 + " is less than " + name2);
        }
        else if (name1.compareToIgnoreCase(name2) == 0)
        {
           System.out.println(name1 + " is equal to " + name2);
        }
        else if (name1.compareToIgnoreCase(name2) > 0)
        {
           System.out.println(name1 + " is greater than " + name2);
        }
    }
}

我的問題是,如果cli等字符串具有相同的字符,為什么它們的值會與ilc不同? 我在另一個問題中讀到,小寫字母與大寫字母的價值不同,盡管有些不完整,但我還是有所理解。 我在任何地方都可以找到有關此問題的詳細解釋,或者有人可以通過一些示例進行解釋嗎? 我輸入

CLI

對於第一個字符串和

ILC

為第二個名字,並得到

cli小於ilc

為什么每個字符串中的字母都比另一個少?

小寫字母和大寫字母的確具有不同的ASCII值,但它們之間用一個常數分隔(我認為是42)。 也就是說, Aa距離與Bb距離相同, Ccc距離相同,等等。

ilccli的不同之處在於它們是完全不同的字符。

compareToIgnoreCase (或equalsIgnoreCase )按字符進行比較。 即,它將str1索引0處的字符與str2索引0處的字符進行比較。 依此類推,對於要比較的兩個字符串的每個索引。

如果你比較ilccli ,然后iilc相比ccli (和他們是不同的),因此比較返回false 比較並不關心i出現在第二個字符串的其他地方,它只關心iI存在於第二個字符串中,且索引與第一個字符串中存在的索引相同(對於所有其他字符,依此類推)我想如果發現一個差異,它可能會被優化為return false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM