Posted on 2007-10-20 11:17
Raylong 閱讀(1108)
評論(4) 編輯 收藏 所屬分類:
感想隨筆
早上看到了一個“二進(jìn)制與任意字符互轉(zhuǎn)小程序”,覺得有幾點(diǎn)不足,因此動手改進(jìn)一下,不足之處歡迎批評指正。也請原作者不要介懷。
public class StringBinaryConvertor {
//字符串轉(zhuǎn)化為2進(jìn)制
public static String stringToBinary(String str){
StringBuffer sb = new StringBuffer("");
char[] charArray = str.toCharArray();
for(char c : charArray) {
sb.append(Integer.toBinaryString((int)c)).append(" ");
}
return sb.toString();
}
//2進(jìn)制轉(zhuǎn)化為字符串
public static String binaryToString(String binStr) throws NumberFormatException{
StringBuffer sb = new StringBuffer("");
String[] strArray = binStr.split(" ");
for(String s : strArray){
sb.append((char)(Integer.parseInt(s, 2)));
}
return sb.toString();
}
}
class Test {
public static void main(String[] args) {
String str = StringBinaryConvertor.stringToBinary("善查類庫,簡化代碼!Right!");
System.out.println(str);
System.out.println();
try{
System.out.println(StringBinaryConvertor.binaryToString(str));
System.out.println(StringBinaryConvertor.binaryToString("010021111"));
} catch (NumberFormatException nfe){
System.out.println("Illegal binary!");
}
}
}
我主要考慮了幾點(diǎn):
1、作為工具類,靜態(tài)方法比較好一點(diǎn),Java類庫中util中就有很多是靜態(tài)的工具。
2、原程序沒有充分利用到Java類庫,有冗余。自己編寫的代碼越多,bug的幾率越大!
3、異常處理是健壯的代碼不可少的。輸入一堆0、1很容易出錯,而且萬一分隔符分得不恰當(dāng)呢?
4、在大量字符串連接時,String創(chuàng)建了大量的無用的中間String,其開銷是指數(shù)增長d俄。而用StringBuffer,其開銷是線性增長的。
5、用for/each循環(huán)代替for。這個代碼只是要遍歷,和下標(biāo)無關(guān),用for/each更好一點(diǎn)。
備注:StringTokenizer類可以實(shí)現(xiàn)字符串分析,但是StringTokenizer是出于兼容性的原因而被保留的遺留類。建議所有尋求此功能的人使用 String 的 split方法或 java.util.regex 包。
這是提醒我的,原來還真不知道。正是應(yīng)了那句話:獨(dú)學(xué)而無友,則孤陋而寡聞。