Java之 string 类型比大小

xiaoxiao2025-07-16  14

compare To:

String的compareTo其实就是依次比较两个字符串ASC码。如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值。如果两个字符串完全一样,则返回0。来看一下代码。

public int compareTo(String anotherString) { int len1 = count; int len2 = anotherString.count; //获取到两个字符串的较短的长度 int n = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; if (i == j) { int k = i; int lim = n + i; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; //如果两个字符的ASC不相同,则直接返回 if (c1 != c2) { return c1 - c2; } k++; } } else { while (n-- != 0) { char c1 = v1[i++]; char c2 = v2[j++]; //如果两个字符的ASC不相同,则直接返回 if (c1 != c2) { return c1 - c2; } } } //如果都一样,返回两个字符串的长度查 return len1 - len2; }

根据上面的代码,我们可以很方便的计算吃两个字符串的comperTo的值:

abcd".compareTo("adef")== -2 "abc".compareTo("abcdef")== -3 "abc".compareTo("abc") == 0

应用的话可以看一下这道题,对字符串的字典序进行排序:实例

伪代码(升序):

for(int i=0;i<f;i++) { for(int j=0;j<f-i-1;j++) { if(q[j].sorce<q[j+1].sorce) { w=q[j]; q[j]=q[j+1]; q[j+1]=w; } else if(q[j].sorce==q[j+1].sorce) { if(q[j].name.compareTo(q[j+1].name)>0) { w=q[j]; q[j]=q[j+1]; q[j+1]=w; } } } }

转载自:http://wobfei.iteye.com/blog/743123

 

转载请注明原文地址: https://www.6miu.com/read-5033193.html

最新回复(0)