Posted on 2007-10-20 11:17
Raylong 阅读(1099)
评论(4) 编辑 收藏 所属分类:
感想随笔
早上看到了一个“二进制与任意字符互转小程序”,觉得有几点不足,因此动手改进一下,不足之处欢迎批评指正。也请原作者不要介怀。
public class StringBinaryConvertor {
//字符串转化为2进制
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进制转化为字符串
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!");
}
}
}
我主要考虑了几点:
1、作为工具类,静态方法比较好一点,Java类库中util中就有很多是静态的工具。
2、原程序没有充分利用到Java类库,有冗余。自己编写的代码越多,bug的几率越大!
3、异常处理是健壮的代码不可少的。输入一堆0、1很容易出错,而且万一分隔符分得不恰当呢?
4、在大量字符串连接时,String创建了大量的无用的中间String,其开销是指数增长d俄。而用StringBuffer,其开销是线性增长的。
5、用for/each循环代替for。这个代码只是要遍历,和下标无关,用for/each更好一点。
备注:StringTokenizer类可以实现字符串分析,但是StringTokenizer是出于兼容性的原因而被保留的遗留类。建议所有寻求此功能的人使用 String 的 split方法或 java.util.regex 包。
这是提醒我的,原来还真不知道。正是应了那句话:独学而无友,则孤陋而寡闻。