public static void main(string args)
stringutils的compare原始碼解析:底層實現其實還是用的string的compareto,只是做了一些特殊情況處理
public static int compare(final string str1, final string str2)
public static int compare(final string str1, final string str2, final boolean nullisless)
if (str1 == null)
if (str2 == null)
return str1.compareto(str2);
}
string的compareto原始碼解析:比較是基於字串中各個字元的unicode值,先是獲取兩個字串的長度(string內部維護著char型別的value作為字串的容器),取兩者長度的最小值作為迴圈遍歷的終點,不斷地比較兩個字串陣列的對應位置是否相等,出現不相等則返回兩者字元的unicode差值,如果遍歷完都相等,則返回兩字串長度的差值,差值=0則說明相等
public int compareto(string anotherstring)
k++;
}return len1 - len2;
}
stringutils工具類的equals方法原始碼解析:前面部if判斷部分與其compare含義類似。最後呼叫的是charsequenceutils.regionmatches方法,是一種區域匹配的實現。通過以字串1為基準匹配字串2.
因為本文是比較兩個string型別的字串,所以到cs1.equals(cs2)語段執行完就結束了
public static boolean equals(final charsequence cs1, final charsequence cs2)
if (cs1 == null || cs2 == null)
if (cs1.length() != cs2.length())
if (cs1 instanceof string && cs2 instanceof string)
return charsequenceutils.regionmatches(cs1, false, 0, cs2, 0, cs1.length());
}
看看string的equals的實現:其實現與string的compareto的實現想法是差不多的,本質還是挨個比較字串的字元
public boolean equals(object anobject)
if (anobject instanceof string)
return true;}}
return false;
}
比較兩個字串是否相等
我剛剛才學了組合語言,就寫了乙個很簡單的程式.下面是程式 dseg segment data1 db 9,0,9 dup data2 db 9,0,9 dup cnt db 8 str1 db 13,10,two string is same.str2 db 13,10,two string is ...
shell比較兩個字串是否相等
比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是特意安排的,因為當 test為空的時候,上面的表示式就變成了x testx,顯然是不相等...
shell比較兩個字串是否相等
比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是特意安排的,因為當 test為空的時候,上面的表示式就變成了x testx,顯然是不相等...