當前位置:編程學習大全網 - 源碼下載 - 1100110源代碼。

1100110源代碼。

直接貼,慢慢來。

如果不能完全粘貼,為什麽不去sun自己下載原java代碼呢?都是公開的。

/*

* @(#)integer . Java 1.76 03/01/23

*

*版權所有2003 Sun Microsystems,Inc .保留所有權利。

* SUN專有/機密。使用受許可條款限制。

*/

包java.lang

/**

*在& lt代碼& gt整數& lt/code & gt;類包裝基元類型的值

* & lt代碼& gtint & lt/code & gt;在壹個物體中。類型的對象

* & lt代碼& gt整數& lt/code & gt;包含類型為的單個字段

* & lt代碼& gtint & lt/code & gt;。

*

* & ltp & gt

*

*此外,此類提供了幾種方法來轉換

* & lt代碼& gtint & lt/code & gt;敬a & lt代碼& gt字符串& lt/code & gt;和壹個& lt代碼& gt字符串& lt/code & gt;

*到壹個& lt代碼& gtint & lt/code & gt;,以及其他常數和方法

*在處理& lt代碼& gtint & lt/code & gt;。

*

* @作者李·博因頓

* @作者亞瑟·範霍夫

* @版本1.76,01/23/03

* @自JDK1.0

*/

公共最終類整數擴展數實現可比{

/**

*保存最小值an & lt代碼& gtint & lt/code & gt;能

* have,-2 & lt;sup & gt31 & lt;/sup & gt;。

*/

公共靜態final int MIN _ VALUE = 0x80000000

/**

*保存最大值的常數an & lt代碼& gtint & lt/code & gt;能

*有,2 & ltsup & gt31 & lt;/sup & gt;-1.

*/

public static final int MAX _ VALUE = 0x 7 fffffff;

/**

*在& lt代碼& gtClass & lt/code & gt;表示基元類型的實例

* & lt代碼& gtint & lt/code & gt;。

*

* @自JDK1.1

*/

public static final Class TYPE = Class . getprimitiveclass(" int ");

/**

*將數字表示為字符串的所有可能字符

*/

最終靜態字符[]位數= {

'0' , '1' , '2' , '3' , '4' , '5' ,

6 ',' 7 ',' 8 ',' 9 ',' a ',' b ',

' c ',' d ',' e ',' f ',' g ',' h ',

' I ',' j ',' k ',' l ',' m ',' n ',

' o ',' p ',' q ',' r ',' s ',' t ',

' u ',' v ',' w ',' x ',' y ',' z '

};

/**

*返回中第壹個參數的字符串表示形式

*由第二個參數指定的基數。

* & ltp & gt

*如果基數小於& lt代碼& gt性格。最小基數& lt/code & gt;

*或大於& lt代碼& gt性格。MAX _ RADIX & lt/code & gt;,然後是基數

* & lt代碼& gt10 & lt;/code & gt;改為使用。

* & ltp & gt

*如果第壹個參數為負,則

*結果是ASCII減字符& lt代碼& gt-' & lt;/code & gt;

*(& lt;代碼& gt\ u002D ' & lt/code & gt;).如果第壹個參數不是

*負數,結果中不出現符號字符。

* & ltp & gt

*結果的剩余字符代表數量級

*第壹個參數。如果震級為零,它就是

*用單個零字符& lt代碼& gt0 ' & lt/code & gt;

*(& lt;代碼& gt\ u0030 ' & lt/code & gt;);否則,的第壹個字符

*量值的表示將不為零

*性格。以下ASCII字符用作數字:

* & ltblockquote & gt& ltpre & gt

* 0123456789 abcdefghijklmnopqrstuvwxyz

* & lt/pre & gt;& lt/block quote & gt;

*這些是& lt代碼& gt\ u0030 ' & lt/code & gt;穿過

* & lt代碼& gt\ u0039 ' & lt/code & gt;並且& lt代碼& gt\ u 0061 ' & lt;/code & gt;穿過

* & lt代碼& gt\ u007A ' & lt/code & gt;。如果& lt代碼& gtradix & lt/code & gt;是

* & ltvar & gtN & lt/var & gt;,那麽第壹個& ltvar & gtN & lt/var & gt;這些角色中

*被用作基數-& lt;var & gtN & lt/var & gt;按所示順序排列的數字。因此,

*十六進制的數字(基數16)是

* & lt代碼& gt0123456789 abcdef & lt;/code & gt;。如果大寫字母是

*如果需要,{ @ link Java . lang . string # toupper case()}方法可以

*在結果上被調用:

* & ltblockquote & gt& ltpre & gt

* Integer.toString(n,16)。toUpperCase()

* & lt/pre & gt;& lt/block quote & gt;

*

* @param i要轉換為字符串的整數。

* @param radix字符串表示形式中使用的基數。

* @返回以指定基數表示的參數字符串。

* @ see Java . lang . character # MAX _ RADIX

* @ see Java . lang . character # MIN _ RADIX

*/

公共靜態字符串toString(int i,int radix) {

if(radix & lt;性格。最小基數||基數& gt性格。MAX_RADIX)

基數= 10;

/*使用更快的版本*/

if (radix == 10) {

返回toString(I);

}

char buf[]= new char[33];

布爾負數=(I & lt;0);

int charPos = 32

如果(!負){

I =-I;

}

while(我& lt=-基數){

buf[charPos - ] =數字[-(i %基數)];

i = i /基數;

}

buf[charPos]= digits[-I];

如果(負){

buf[-charPos]= '-';

}

返回新字符串(buf,charPos,(33-charPos));

}

/**

*以形式返回整數參數的字符串表示形式

*基數中的無符號整數?16.

* & ltp & gt

*無符號整數值是參數加2 & ltsup & gt32 & lt/sup & gt;

*如果參數是否定的;否則,它等於

*參數。這個值被轉換成壹串ASCII數字

*以十六進制(base?16),沒有多余的前導

* & lt代碼& gt0 & lt/code & gt;如果無符號幅度為零,則為

*用單個零字符& lt代碼& gt0 ' & lt/code & gt;

*(& lt;代碼& gt\ u0030 ' & lt/code & gt;);否則,的第壹個字符

*無符號幅度的表示不是

*零字符。以下字符用作

*十六進制數字:

* & ltblockquote & gt& ltpre & gt

* 0123456789abcdef

* & lt/pre & gt;& lt/block quote & gt;

*這些是字符& lt代碼& gt\ u0030 ' & lt/code & gt;穿過

* & lt代碼& gt\ u0039 ' & lt/code & gt;並且& lt代碼& gt\ u 0061 ' & lt;/code & gt;穿過

* & lt代碼& gt\ u0066 ' & lt/code & gt;。如果大寫字母是

*如果需要,{ @ link Java . lang . string # toupper case()}方法可以

*在結果上被調用:

* & ltblockquote & gt& ltpre & gt

* Integer.toHexString(n)。toUpperCase()

* & lt/pre & gt;& lt/block quote & gt;

*

* @param i要轉換為字符串的整數。

* @返回無符號整數值的字符串表示

*由十六進制的參數表示(base?16).

* @自JDK1.0.2

*/

public static String to hex String(int I){

返回到nsignedString(i,4);

}

/**

*以形式返回整數參數的字符串表示形式

*基數中的無符號整數?8.

* & ltp & gt

*無符號整數值是參數加2 & ltsup & gt32 & lt/sup & gt;

*如果參數是否定的;否則,它等於

*參數。這個值被轉換成壹串ASCII數字

*以八進制(base?8)沒有額外的前導& lt代碼& gt0 & lt/code & gt;南

* & ltp & gt

*如果無符號幅度為零,則用a表示

*單個零字符& lt代碼& gt0 ' & lt/code & gt;

*(& lt;代碼& gt\ u0030 ' & lt/code & gt;);否則,的第壹個字符

*無符號幅度的表示不是

*零字符。以下字符用作八進制

*數字:

* & ltblockquote & gt& ltpre & gt

* 01234567

* & lt/pre & gt;& lt/block quote & gt;

*這些是字符& lt代碼& gt\ u0030 ' & lt/code & gt;穿過

* & lt代碼& gt\ u0037 ' & lt/code & gt;。

*

* @param i要轉換為字符串的整數。

* @返回無符號整數值的字符串表示

*用八進制(base?8).

* @自JDK1.0.2

*/

公共靜態字符串toOctalString(int i) {

return toUnsignedString(i,3);

}

/**

*以形式返回整數參數的字符串表示形式

*基數中的無符號整數?2.

* & ltp & gt

*無符號整數值是參數加2 & ltsup & gt32 & lt/sup & gt;

*如果參數是否定的;否則,它等於

*參數。這個值被轉換成壹串ASCII數字

*以二進制(base?2)沒有額外的前導& lt代碼& gt0 & lt/code & gt;南

*如果無符號幅度為零,則用a表示

*單個零字符& lt代碼& gt0 ' & lt/code & gt;

*(& lt;代碼& gt\ u0030 ' & lt/code & gt;);否則,的第壹個字符

*無符號幅度的表示不是

*零字符。字符& lt代碼& gt0 ' & lt/code & gt;

*(& lt;代碼& gt\ u0030 ' & lt/code & gt;)和& lt代碼& gt1 ' & lt;/code & gt;

*(& lt;代碼& gt\ u 0031 ' & lt;/code & gt;)用作二進制數字。

*

* @param i要轉換為字符串的整數。

* @返回無符號整數值的字符串表示

*用二進制(base?2).

* @自JDK1.0.2

*/

公共靜態字符串toBinaryString(int i) {

返回toUnsignedString(i,1);

}

/**

*將整數轉換為無符號數。

*/

私有靜態字符串toUnsignedString(int i,int shift) {

char[]buf = new char[32];

int charPos = 32

int radix = 1 & lt;& lt移位;

int mask = radix-1;

做{

buf[ - charPos] =數字。面膜];

我& gt& gt& gt= shift

}而(我!= 0);

返回新字符串(buf,charPos,(32-charPos));

}

最終靜態字符[]數字= {

'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',

} ;

最終靜態字符[]數字音= {

'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',

} ;

//我使用“不變乘法除法”技巧來

//加速Integer.toString。我們特別希望

//避免除以10。

//

//這個“詭計”具有大致相同的性能特征

//作為非JIT虛擬機上的“經典”Integer.toString代碼。

//招數避免。雷姆和。div調用,但代碼更長

//路徑,因此受調度開銷支配。在……裏

// JIT情況調度開銷不存在,並且

//“trick”比經典代碼快得多。

//

// TODO-FIXME:將(x * 52429)轉換為等價的shift-add

//序列。

//

// RE:使用乘法除以不變整數

// T .格拉隆德,P .蒙哥馬利

// ACM PLDI 1994

//

/**

*返回壹個& lt代碼& gt字符串& lt/code & gt;對象,表示

*指定的整數。該參數被轉換為帶符號的十進制數

*表示形式並作為字符串返回,就像

*參數和基數10作為參數提供給了{@link

* #toString(int,int)}方法。

*

* @param i要轉換的整數。

* @返回base中參數的字符串表示?10.

*/

公共靜態字符串toString(int i) {

開關(i) {

case整數。MIN _ VALUE:return“-2147483648”;

情況-3:返回“-3”;

情況-2:返回“-2”;

case-1:return“-1”;

案例0:返回“0”;

案例1:返回“1”;

情況二:返回“2”;

案例三:返回“3”;

案例四:返回“4”;

案例五:返回“5”;

案例6:返回“6”;

案例7:返回“7”;

案例8:返回“8”;

案例9:返回“9”;

案例10:返回“10”;

}

char[]buf =(char[])(perthreadbuffer . get());

int charPos = getChars(i,buf);

返回新字符串(buf,charPos,12-charPos);

}

//用於字符串/stringbuffer轉換的每線程緩沖區

私有靜態thread local perThreadBuffer = new thread local(){

受保護的同步對象initialValue() {

返回新字符[12];

}

};

private static int getChars(int i,char[] buf) {

int q,r;

int charPos = 12;

字符符號= 0;

如果(我& lt0) {

符號= '-';

I =-I;

}

//每次叠代生成兩位數

while(I & gt;= 65536) {

q = I/100;

//真的:r = I-(q * 100);

r = I-((q & lt;& lt6)+(q & lt;& lt5)+(q & lt;& lt2));

I = q;

buf[-charPos]= digi tones[r];

buf[-charPos]= digit tens[r];

}

//對於較小的數字,可降至快速模式

//assert(I & lt;= 65536,I);

for(;;) {

q = (i * 52429)>& gt& gt(16+3);

r = I-((q & lt;& lt3)+(q & lt;& lt1));// r = i-(q*10)...

buf[-charPos]= digits[r];

I = q;

if(I = = 0)break;

}

如果(簽!= 0) {

buf[-charPos]= sign;

}

返回charPos

}

靜態void appendTo(int i,StringBuffer sb) {

開關(i) {

case整數。最小值:

sb . append("-2147483648 ");

返回;

情況-3:sb . append("-3 ");返回;

情況-2:sb . append("-2 ");返回;

case-1:sb . append("-1 ");返回;

案例0: sb追加(" 0 ");返回;

案例1:sb . append(" 1 ");返回;

案例二:sb追加(" 2 ");返回;

案例三:sb追加(" 3 ");返回;

案例四:sb追加(" 4 ");返回;

案例五:sb追加(" 5 ");返回;

案例6: sb追加(" 6 ");返回;

案例7: sb追加(" 7 ");返回;

案例8: sb追加(" 8 ");返回;

案例9: sb追加(" 9 ");返回;

案例10:sb . append(" 10 ");返回;

}

char[]buf =(char[])(perthreadbuffer . get());

int charPos = getChars(i,buf);

sb.append(buf,charPos,12-charPos);

}

/**

*將字符串參數解析為基數中的有符號整數

*由第二個參數指定。字符串中的字符

*必須都是指定基數的數字(由確定

*是否{ @ link Java . lang . character # digit(char,int)}返回壹個

*非負值),只是第壹個字符可以是

* ASCII減號& lt代碼& gt-' & lt;/code & gt;(& lt代碼& gt\ u002D ' & lt/code & gt;)到

*表示負值。返回結果整數值。

* & ltp & gt

*類型為& lt代碼& gtNumberFormatException & lt/code & gt;是

*如果出現以下任何情況,則拋出:

* & ltul & gt

* & lt李& gt第壹個參數是& lt代碼& gtnull & lt/code & gt;或者是壹串

*長度為零。

* & lt李& gt基數要麽小於

* { @ link Java . lang . character # MIN _ RADIX }或

*大於{ @ link Java . lang . character # MAX _ RADIX }。

* & lt李& gt字符串中的任何字符都不是指定的數字

*基數,只是第壹個字符可以是減號

* & lt代碼& gt-' & lt;/code & gt;(& lt代碼& gt\ u002D ' & lt/code & gt;)前提是

*字符串長度超過1。

* & lt李& gt字符串表示的值不是類型的值

* & lt代碼& gtint & lt/code & gt;。

* & lt/ul & gt;& ltp & gt

*示例:

* & ltblockquote & gt& ltpre & gt

* parseInt("0 ",10)返回0

* parseInt("473 ",10)得出473

* parseInt("-0 ",10)返回0

* parseInt("-FF ",16)返回-255

* parse int(" 1100110 ",2)得出102

* parseInt("2147483647 ",10)得出2147483647

* parseInt("-2147483648 ",10)返回-2147483648

* parseInt("2147483648 ",10)拋出NumberFormatException

* parseInt("99 ",8)拋出NumberFormatException

* parseInt("Kona ",10)拋出NumberFormatException

* parseInt("Kona ",27)返回411787

* & lt/pre & gt;& lt/block quote & gt;

*

* @ param s the & lt代碼& gt字符串& lt/code & gt;包含整數的

*要解析的表示

* @param radix解析時要使用的基數& lt代碼& gts & lt/code & gt;。

* @返回中字符串參數表示的整數

*指定基數。

* @ exception NumberFormatException如果& lt代碼& gt字符串& lt/code & gt;

*不包含可解析的& lt代碼& gtint & lt/code & gt;。

*/

公共靜態int parseInt(String s,int radix)

引發NumberFormatException

{

if (s == null) {

拋出新的NumberFormatException(" null ");

}

if(radix & lt;性格。最小基數){

拋出新的NumberFormatException(" radix "+radix+

“小於性格。MIN _ RADIX ");

}

if(radix & gt;性格。MAX_RADIX) {

拋出新的NumberFormatException(" radix "+radix+

“大於性格。MAX _ RADIX ");

}

int result = 0;

布爾負數=假;

int i = 0,max = s . length();

int限制;

int multmin

int數字;

if(max & gt;0) {

if (s.charAt(0) == '-') {

負=真;

極限=整數。最小值;

i++;

}否則{

極限=-整數。MAX _ VALUE

}

multmin =極限/基數;

如果(我& lt最大){

digit = character . digit(s . charat(i++),radix);

if(digit & lt;0) {

拋出numberformatexception . for input string;

}否則{

結果=-數字;

}

}

while(我& lt最大){

//負累加避免在MAX_VALUE附近出現意外

digit = character . digit(s . charat(i++),radix);

if(digit & lt;0) {

拋出numberformatexception . for input string;

}

if(結果& ltmultmin) {

拋出numberformatexception . for input string;

}

結果*=基數;

if(結果& lt極限+數字){

拋出numberformatexception . for input string;

}

結果-=數字;

}

}否則{

拋出numberformatexception . for input string;

}

如果(負){

如果(i & gt1) {

返回結果;

} else { /*只得到“-”*/

拋出numberformatexception . for input string;

}

}否則{

返回-結果;

}

}

/**

*將字符串參數解析為有符號的十進制整數。這

*字符串中的字符必須都是十進制數字,除了

*第壹個字符可以是ASCII減號& lt代碼& gt-' & lt;/code & gt;

*(& lt;代碼& gt\ u002D ' & lt/code & gt;)表示負值。產生的

*返回整數值,就像參數和基數壹樣

* 10作為參數提供給

* { @ link # parse int(Java . lang . string,int)}方法。

*

* @ param s a & lt代碼& gt字符串& lt/code & gt;包含& lt代碼& gtint & lt/code & gt;

*要解析的表示

* @返回以十進制表示的整數值。

* @ exception NumberFormatException如果字符串不包含

*可解析的整數。

*/

公共靜態int parseInt(String s)拋出NumberFormatException {

返回parseInt(s,10);

}

/**

*返回壹個& lt代碼& gt整數& lt/code & gt;保存該值的對象

*從指定的& lt代碼& gt字符串& lt/code & gt;解析時

*基數由第二個參數給出。第壹個論點

*被解釋為表示基數中的有符號整數

*由第二個參數指定,就像參數

*提供給{ @ link # parse int(Java . lang . string,int)}

*方法。結果是壹個& lt代碼& gt整數& lt/code & gt;反對

*表示由字符串指定的整數值。

* & ltp & gt

*換句話說,該方法返回壹個& lt代碼& gt整數& lt/code & gt;

*對象的值等於:

*

* & ltblockquote & gt& lt代碼& gt

*新整數(Integer.parseInt(s,radix))

* & lt/code & gt;& lt/block quote & gt;

*

* @param s要分析的字符串。

* @param radix將基數設為u

  • 上一篇:CentOS-5.5-i386-bin-DVD是linux哪個版本
  • 下一篇:在Java中怎樣把數組轉換為ArrayList
  • copyright 2024編程學習大全網