如题所述
æ¯è¾çè§ååæ°æ®åºä¸çorder byææä¸è´
å®ç°ä»£ç å¦ä¸
/**
* Name: æ¯è¾ä¸¤ä¸ªå符串大å°
* nullèªå¨è½¬ä¸ºç©ºï¼ç©ºå符串æ大ï¼
*
* @param first è¦æ¯è¾ç第ä¸ä¸ªå符串ï¼
* second è¦æ¯è¾ç第äºä¸ªå符串ï¼
* @return first大äºsecondè¿åæ£æ°ï¼
* firstçäºsecondè¿å0ï¼
* firstå°äºsecondè¿åè´æ°ï¼
* å é¨å¼å¸¸é»è®¤è¿å0ï¼
* è¿åå¼éåºå®å¼ï¼
*/
public static int compareString(String first,String second){
int result = 0;
try{
//null转空
first = first==null?"":first;
second = second==null?"":second;
//é¢å è®°å½å符串é¿åº¦ï¼é¿å åå¤è¯»å
int firstLength=first.length();
int secondLength=second.length();
//å¤çå«æ空串çç¹æ®æ åµ
if("".equals(first) || "".equals(second)){
//è°é¿è°å°
result = secondLength-firstLength;
}else{
//临æ¶ç©ºé´ï¼ç¨æ¥åæ¾asciiç æ»å
int firstCount = 0;
int secondCount = 0;
//ç¨çº¯è¿ç®å¾åºä¸¤ä¸ªæ°ä¸è¾å°çæ°ï¼å®å¨æ¯bt
int minLength = (secondLength*(firstLength/secondLength) +
firstLength*(secondLength/firstLength))/(firstLength/secondLength +
secondLength/firstLength);
//æ两个å符串ä¸è¾ççä½æ°å»éä½æªå,é²æ¢è¶ç
for(int i=0;i<minLength;i++){
//æ±asciiç å
firstCount+=first.substring(i,i+1).getBytes()[0];
secondCount+=second.substring(i,i+1).getBytes()[0];
//åä¸ç¸çï¼è¯´æå·²ç»æ¯è¾åºäºå¤§å°
if(firstCount!=secondCount){
break;
}
}
if(firstCount==secondCount){
//é¿åº¦é¿ç大
result = firstLength-secondLength;
}else{
//æ»å大ç大
result = firstCount-secondCount;
}
}
}catch (Exception e) {}
return result;
}
å®ç°ä»£ç å¦ä¸
/**
* Name: æ¯è¾ä¸¤ä¸ªå符串大å°
* nullèªå¨è½¬ä¸ºç©ºï¼ç©ºå符串æ大ï¼
*
* @param first è¦æ¯è¾ç第ä¸ä¸ªå符串ï¼
* second è¦æ¯è¾ç第äºä¸ªå符串ï¼
* @return first大äºsecondè¿åæ£æ°ï¼
* firstçäºsecondè¿å0ï¼
* firstå°äºsecondè¿åè´æ°ï¼
* å é¨å¼å¸¸é»è®¤è¿å0ï¼
* è¿åå¼éåºå®å¼ï¼
*/
public static int compareString(String first,String second){
int result = 0;
try{
//null转空
first = first==null?"":first;
second = second==null?"":second;
//é¢å è®°å½å符串é¿åº¦ï¼é¿å åå¤è¯»å
int firstLength=first.length();
int secondLength=second.length();
//å¤çå«æ空串çç¹æ®æ åµ
if("".equals(first) || "".equals(second)){
//è°é¿è°å°
result = secondLength-firstLength;
}else{
//临æ¶ç©ºé´ï¼ç¨æ¥åæ¾asciiç æ»å
int firstCount = 0;
int secondCount = 0;
//ç¨çº¯è¿ç®å¾åºä¸¤ä¸ªæ°ä¸è¾å°çæ°ï¼å®å¨æ¯bt
int minLength = (secondLength*(firstLength/secondLength) +
firstLength*(secondLength/firstLength))/(firstLength/secondLength +
secondLength/firstLength);
//æ两个å符串ä¸è¾ççä½æ°å»éä½æªå,é²æ¢è¶ç
for(int i=0;i<minLength;i++){
//æ±asciiç å
firstCount+=first.substring(i,i+1).getBytes()[0];
secondCount+=second.substring(i,i+1).getBytes()[0];
//åä¸ç¸çï¼è¯´æå·²ç»æ¯è¾åºäºå¤§å°
if(firstCount!=secondCount){
break;
}
}
if(firstCount==secondCount){
//é¿åº¦é¿ç大
result = firstLength-secondLength;
}else{
//æ»å大ç大
result = firstCount-secondCount;
}
}
}catch (Exception e) {}
return result;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-10-04
1. C 语言
在C语言中字符串和字符数组基本上没有区别,都需要结束符;如:char s[4]={'a','b','c','d'};此字符数组的定义编译可以通过,但却没有关闭数组,若其后需要申请内存,那么以后的数据均会放入其中,尽管它的长度不够,但若为 char s[5]={'a','b','c','d'};则系统会自动在字符串的最后存放一个结束符,并关闭数组,说明字符数组是有结束符的;
而字符串定义的长度必须大于字符序列的长度,如:char s1[4]={"abcd"};编译不能通过,而应写成char s1[5]={"abcd"};并且系统会自动在字符串的最后存放一个结束符,说明字符串有结束符;
在C语言中使用strlen()函数可以测数组的长度,strlen()函数计算的时候不包含结束符'/0'。
char s[5]={'a','b','c','d'};
char s1[5]={"abcd"};
int a=strlen(s);
int b=strlen(s1);
结果是a,b均为4;
2.Java语言
字符串和字符串数组都是不需要结束符的;
如:char[] value={'j','a','v','a','语','言'};
String s1=new String(value);
String s2="java语言";
int a=value.length;
int b=s1.length();
int c=s2.length();
运行得到的结果a,b,c都是6,说明字符串和字符串数组都不需要结束符。但注意此处value.length和s1.length(),在数组中有名常量length可以记录数组对象的长度,而length()是File类中的一个实例方法,用于返回文件的大小,当然也可以返回字符串的大小。
在C语言中字符串和字符数组基本上没有区别,都需要结束符;如:char s[4]={'a','b','c','d'};此字符数组的定义编译可以通过,但却没有关闭数组,若其后需要申请内存,那么以后的数据均会放入其中,尽管它的长度不够,但若为 char s[5]={'a','b','c','d'};则系统会自动在字符串的最后存放一个结束符,并关闭数组,说明字符数组是有结束符的;
而字符串定义的长度必须大于字符序列的长度,如:char s1[4]={"abcd"};编译不能通过,而应写成char s1[5]={"abcd"};并且系统会自动在字符串的最后存放一个结束符,说明字符串有结束符;
在C语言中使用strlen()函数可以测数组的长度,strlen()函数计算的时候不包含结束符'/0'。
char s[5]={'a','b','c','d'};
char s1[5]={"abcd"};
int a=strlen(s);
int b=strlen(s1);
结果是a,b均为4;
2.Java语言
字符串和字符串数组都是不需要结束符的;
如:char[] value={'j','a','v','a','语','言'};
String s1=new String(value);
String s2="java语言";
int a=value.length;
int b=s1.length();
int c=s2.length();
运行得到的结果a,b,c都是6,说明字符串和字符串数组都不需要结束符。但注意此处value.length和s1.length(),在数组中有名常量length可以记录数组对象的长度,而length()是File类中的一个实例方法,用于返回文件的大小,当然也可以返回字符串的大小。
第2个回答 2012-05-31
//<这个才是数组值与值的比较,注:我前面导入了Array包。> System.out.字符串是一个比较特殊的对象。字符串之所以特殊,是因为java会在内容中为r
第3个回答 2012-06-07
看看比较的时内容还是比较的是内存地址,比较这玩意的时候,也要看看有没有重写equals()方法。
第4个回答 推荐于2016-06-09
//字符串的比较
public class StringCompare {
public static void main(String args[]) {
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println("s1==s2 ?: " + (s1 == s2));
System.out.println("s1==s3 ?: " + (s1 == s3));
System.out.println("s3==s4 ?: " + (s3 == s4));
System.out.println("s1.equals(s2) ?: " + s1.equals(s2));
System.out.println("s1.equals(s3) ?: " + s1.equals(s3));
System.out.println("s3.equals(s4) ?: " + s3.equals(s4));
System.out.println("s1.compareTo(s3) ?: " + s1.compareTo(s3));
String ss1= String.valueOf(123); //s1内容为:"123"
String ss2= String.valueOf(false); //s2内容为:"false"
String ss3= String.valueOf(4.5f); //s3内容为:"4.5"
String ss4= ss1+ss2+ss3; //s4内容为:"123false4.5"
System.out.println(ss4);
}
}本回答被提问者采纳
public class StringCompare {
public static void main(String args[]) {
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println("s1==s2 ?: " + (s1 == s2));
System.out.println("s1==s3 ?: " + (s1 == s3));
System.out.println("s3==s4 ?: " + (s3 == s4));
System.out.println("s1.equals(s2) ?: " + s1.equals(s2));
System.out.println("s1.equals(s3) ?: " + s1.equals(s3));
System.out.println("s3.equals(s4) ?: " + s3.equals(s4));
System.out.println("s1.compareTo(s3) ?: " + s1.compareTo(s3));
String ss1= String.valueOf(123); //s1内容为:"123"
String ss2= String.valueOf(false); //s2内容为:"false"
String ss3= String.valueOf(4.5f); //s3内容为:"4.5"
String ss4= ss1+ss2+ss3; //s4内容为:"123false4.5"
System.out.println(ss4);
}
}本回答被提问者采纳