gpt4 book ai didi

java - Java 风格比较两个字符串

转载 作者:行者123 更新时间:2023-11-30 04:10:42 24 4
gpt4 key购买 nike

我在阅读中看到了这一点,它允许您使用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 不同?我在另一个问题中读到小写字母与大写字母的值(value)不同,我有些理解这一点,尽管不完全。有没有什么地方我可以找到对此进行深入解释,或者有人可以用几个例子进行解释?我输入

cli

第一个字符串和

ilc

得到第二个名字

cli is less than ilc

为什么每个字符串中相同的字母一个比另一个少?

最佳答案

小写和大写字母确实具有不同的 ASCII 值,但它们由一个常量(我认为是 42)分隔。也就是说,Aa 的距离与 Bb 的距离与 C 距 b 的距离相同 来自 c

ilccli 的不同之处在于它们是完全不同的字符。

compareToIgnoreCase(或equalsIgnoreCase)进行逐个字符的比较。也就是说,它将 str1 的索引 0 处的字符与 str2 的索引 0 处的字符进行比较。依此类推,对于要比较的两个字符串的每个索引。

如果比较 ilccli,则将 ilc 中的 iccli 中(它们是不同的),因此比较返回 false。比较不关心 i 是否出现在第二个字符串中的其他位置,它只关心 iI 是否存在于第二个字符串中的它存在于第一个字符串中的相同索引(对于所有其余字符也是如此,尽管我想它可能会被优化为一旦发现一个差异就返回 false)。

关于java - Java 风格比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com