题目:根据字符串内字符的ASCII码值对字符串数组进行排序。
分析:字符串用ASCII码比较大小,规则是:
1、比较首字母的ASCII码大小
2、若是前面的字母相同,则比较之后的字母的ASCII码值
3、若是一个字符串从首字母开始包含另一个字符串,则认为字符串长度较长的大;例 :ab > a
备注:Java中String类有一个compareTo方法,该方法返回一个int类型的数据。其比较规则是:拿出字符串的第一个字符与参数的第一个字符进行比较,如果两者不等,比较结束,返回两者的ascii差,即字符串的第一个字符减去参数的第一个字符的ascii码值.如果相等,则比较第二个字符,以此类推。比较到最后还是相等的,方法返回值为0。
比如下面的代码:“abc”.compareTo(“cad”)==-2
这里有一点需要注意:如果两个字符串的长度不同,并且一个字符串与另一个字符串的前面N个字符相等,那么这个方法返回返回两个字符串长度之差。
比如下面的代码:“fa”.compareTo(“f”)==1
1 public class Prog40{ 2 public static void main(String[] args){ 3 String[] str = {"abc","cad","m","fa","f"}; 4 for(int i=str.length-1;i>=1;i--){ 5 for(int j=0;j<=i-1;j++){ 6 //注意compareTo函数在这里的作用 7 if(str[j].compareTo(str[j+1])<0){ 8 String temp = str[j]; 9 str[j] = str[j+1]; 10 str[j+1] = temp; 11 } 12 } 13 } 14 //此处使用了增强for循环遍历数组元素 15 for(String subStr:str)//定义了一个String类型的变量接收遍历后的数组元素 16 System.out.print(subStr+" ");//将遍历后的数组元素依次输出 17 } 18 } 19 /*运行结果 20 m fa f cad abc 21 */