<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    早上看到了一個“二進(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é)而無友,則孤陋而寡聞。

    Feedback

    # re: 對“二進(jìn)制與任意字符互轉(zhuǎn)小程序”的一點(diǎn)改進(jìn)  回復(fù)  更多評論   

    2007-10-20 13:58 by 翔南
    不介懷不介懷 哈哈
    說的挺對的

    其實(shí)我真的不是很知道什么時候該用static,什么時候不用..望指點(diǎn)!

    Integer的public static int parseInt(String s,
    int radix)
    throws NumberFormatException
    方法至今才知道,看來我對java類庫了解的太少了..
    異常處理再加以配合,真的很棒!

    還有StringBuffer的問題,當(dāng)初也沒多想,聽你這么一說,才意識到效率的問題..
    挺可怕的..

    for each當(dāng)初想用來著,我也挺愛用的,但有一次在我們學(xué)校機(jī)房用(機(jī)房jdk貌似版本很低),就沒成功,我以后就老想著萬一別人的jdk版本沒到1.5那不是就不能編譯通過了..呵呵

    總結(jié)一下,以后編程不能只求實(shí)現(xiàn),一定要設(shè)計好,要多考慮考慮算法和充分利用java類庫!

    # re: 對“二進(jìn)制與任意字符互轉(zhuǎn)小程序”的一點(diǎn)改進(jìn)  回復(fù)  更多評論   

    2007-10-20 15:30 by Raylong
    @翔南
    剛才又改進(jìn)了一下,用StringTokenizer類功能更強(qiáng)大。

    # re: 對“二進(jìn)制與任意字符互轉(zhuǎn)小程序”的一點(diǎn)改進(jìn)  回復(fù)  更多評論   

    2007-10-20 22:04 by 翔南
    其實(shí)用String的split方法也可以達(dá)到這種效果,反正split(String regex)的參數(shù)是個正則表達(dá)式
    如下就可以實(shí)現(xiàn)用空格、,和換行符作為單詞的分割標(biāo)志
    binStr.split(" |,|\\n");

    況且偶在StringTokenizer的API中看到這樣一句話
    "StringTokenizer 是出于兼容性的原因而被保留的遺留類(雖然在新代碼中并不鼓勵使用它)。建議所有尋求此功能的人使用 String 的 split 方法或 java.util.regex 包"

    所以偶覺著這塊還是用split的好吧~~

    # re: 對“二進(jìn)制與任意字符互轉(zhuǎn)小程序”的一點(diǎn)改進(jìn)  回復(fù)  更多評論   

    2007-10-20 22:11 by Raylong
    @翔南
    又是正則表達(dá)式,看來我真的要學(xué)了,刻不容緩 呵呵!
    那你說的我沒注意到,學(xué)習(xí)一下!
    主站蜘蛛池模板: a毛片全部播放免费视频完整18| 亚洲成a人无码亚洲成av无码 | 精品日韩亚洲AV无码| 三年片在线观看免费西瓜视频| 亚洲色一色噜一噜噜噜| 日日摸夜夜添夜夜免费视频| 亚洲精品国产V片在线观看 | 最近2019中文免费字幕在线观看 | 天堂在线免费观看中文版| 亚洲国产精品综合久久20| 成人免费视频小说| 亚洲成AV人片高潮喷水| 国产成人免费A在线视频| 黄色免费网址在线观看| 亚洲爽爽一区二区三区| 国产真人无码作爱免费视频| 久久久亚洲AV波多野结衣| 无码国产精品一区二区免费式影视 | 99精品在线免费观看| 亚洲国产成人精品激情| 国产日产成人免费视频在线观看| 免费手机在线看片| 亚洲精品国产精品乱码不99 | 国内免费高清在线观看| 国产成人综合久久精品亚洲| 亚洲小说区图片区另类春色| 99re免费在线视频| 亚洲精品GV天堂无码男同| 国产亚洲视频在线播放| 在线看免费观看AV深夜影院| 羞羞漫画页面免费入口欢迎你| 久久亚洲欧洲国产综合| 在线观看H网址免费入口| 青娱乐在线免费观看视频| 亚洲av无码一区二区三区乱子伦| 麻豆最新国产剧情AV原创免费 | 亚洲资源在线视频| 国产一级淫片视频免费看 | 一二三四免费观看在线电影 | 美女被免费网站91色| 亚洲人成影院在线高清|