java Integer轉(zhuǎn)String

jdk中Integer 轉(zhuǎn)String


基礎(chǔ)數(shù)據(jù)類型

  • Integer:
    • Integer 轉(zhuǎn)成字符串 基本思路時(shí) 取出每個(gè)數(shù) 然后通過整數(shù)表查詢 可以直接%10獲取每個(gè)位上的數(shù)
      Integer.toString() 該方法首先時(shí)將整數(shù)類型進(jìn)行拆分
1、拆分整數(shù)
  final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
                                      99999999, 999999999, Integer.MAX_VALUE };

    // Requires positive x
    static int stringSize(int x) {
        for (int i=0; ; i++)
            if (x <= sizeTable[i])
                return i+1;
    }
    
2、取出位數(shù)和十位 這里主要時(shí)為了考慮獲取速度
final static char [] DigitTens = {
        '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
        '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
        '2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
        '3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
        '4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
        '5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
        '6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
        '7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
        '8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
        '9', '9', '9', '9', '9', '9', '9', '9', '9', '9',
        } ;

    final static char [] DigitOnes = {
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        } ;
    
    //獲取每個(gè)位上的字符
  static void getChars(int i, int index, char[] buf) {
        int q, r;
        int charPos = index;
        char sign = 0;

        if (i < 0) {
            sign = '-';
            i = -i;
        }

        // Generate two digits per iteration
        while (i >= 65536) {
            q = i / 100;
        // really: r = i - (q * 100);
            r = i - ((q << 6) + (q << 5) + (q << 2));
            i = q;
            buf [--charPos] = DigitOnes[r];
            buf [--charPos] = DigitTens[r];
        }

        // Fall thru to fast mode for smaller numbers
        // assert(i <= 65536, i);
        for (;;) {
            //1<<19=524288 
            q = (i * 52429) >>> (16+3);
            r = i - ((q << 3) + (q << 1));  // r = i-(q*10) ...
            buf [--charPos] = digits [r];
            i = q;
            if (i == 0) break;
        }
        if (sign != 0) {
            buf [--charPos] = sign;
        }
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問:Java 中 Integer 轉(zhuǎn) String 的方式有哪些?其轉(zhuǎn)換原理又是怎么樣的呢?簡單說說? 答:方式如...
    Little丶Jerry閱讀 3,128評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,697評論 18 399
  • 曾經(jīng)的我看到這座城每一條街道,每一處風(fēng)景,每一座建筑,我只會匆匆一瞟,無半點(diǎn)留戀。時(shí)隔幾年,故城重回,我認(rèn)...
    皮氵閱讀 157評論 0 0
  • 之前的一篇文章Eclipse編寫MapReduce程序,其實(shí)執(zhí)行是在local。網(wǎng)上查找資料如何在java web...
    2010jing閱讀 1,491評論 0 0
  • 今天大家進(jìn)行了整齊有序的捕俘刀訓(xùn)倆,同時(shí)孩子們的隊(duì)列會操進(jìn)行了練習(xí),體育委員學(xué)回了簡單的帶隊(duì)以及會操。軍訓(xùn)馬上要結(jié)...
    莊梓鋒閱讀 584評論 1 0

友情鏈接更多精彩內(nèi)容