我注意到有几种方法可以比较Java中的字符串.
我很久以前习惯使用equalsIgnoreCase以避免出现区分大小写的字符串问题.
另一方面,其他人喜欢以大写或小写的方式传递所有内容.
从我的立场(即使技术上我坐着),我看不出真正的区别.
有人知道一种做法是否优于另一种做法?如果是这样,为什么?
任何人都可以解释以下代码String.java,特别是为什么有三个if语句(我已经标记//1,//2并且//3)?
private static class CaseInsensitiveComparator
implements Comparator<String>, java.io.Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 8575799808933029326L;
public int compare(String s1, String s2) {
int n1=s1.length(), n2=s2.length();
for (int i1=0, i2=0; i1<n1 && i2<n2; i1++, i2++) {
char c1 = s1.charAt(i1);
char c2 = s2.charAt(i2);
if (c1 != c2) {/////////////////////////1
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {/////////////////////////2
c1 = …Run Code Online (Sandbox Code Playgroud) 我正在写这些代码行:
String name1 = fname.getText().toString();
String name2 = sname.getText().toString();
aru = 0;
count1 = name1.length();
count2 = name2.length();
for (i = 0; i < count1; i++)
{
for (j = 0; j < count2; j++)
{
if (name1.charAt(i)==name2.charAt(j))
aru++;
}
if(aru!=0)
aru++;
}
Run Code Online (Sandbox Code Playgroud)
我想比较Character两个人String忽视这个案子的情况.简单地使用IgnoreCase不起作用.添加"65" ASCII值也不起作用.我该怎么做呢?
当我检查执行CaseInsensitiveComparator,这是私有内部类String,我发现奇怪的事情.
private static class CaseInsensitiveComparator
implements Comparator<String>, java.io.Serializable {
...
public int compare(String s1, String s2) {
int n1 = s1.length();
int n2 = s2.length();
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2) {
// …Run Code Online (Sandbox Code Playgroud)