[英]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)。 也就是說, A
與a
距離與B
與b
距離相同, C
與c
與c
距離相同,等等。
ilc
和cli
的不同之處在於它們是完全不同的字符。
compareToIgnoreCase
(或equalsIgnoreCase
)按字符進行比較。 即,它將str1
索引0
處的字符與str2
索引0
處的字符進行比較。 依此類推,對於要比較的兩個字符串的每個索引。
如果你比較ilc
和cli
,然后i
在ilc
相比c
在cli
(和他們是不同的),因此比較返回false
。 比較並不關心i
出現在第二個字符串的其他地方,它只關心i
或I
存在於第二個字符串中,且索引與第一個字符串中存在的索引相同(對於所有其他字符,依此類推)我想如果發現一個差異,它可能會被優化為return false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.