有关Java里边Integer的源代码

有关Java里边Integer的源代码-海鑫盛高新科技 app开发设计|app制作|企业网站建设|企业网站建设企业|手机软件开发设计|手机微信开发设计 网站建设 企业网站建设 网站建设网站制作SEO提升网站实例网站处理计划方案 APP开发设计 IOS_APP开发设计HTML5开发设计 Android(安卓系统)开发设计 APP实例 商城系统版APP手机软件社交媒体版APP定制日常生活服务版APP运用公司版APP模板餐馆版APP定制4S店版APP展现诊疗版APP运用 版APP作用 处理计划方案 手机微信开发设计 APP新闻资讯 商品技术性公司动态性制造行业动态性技术性新闻资讯公司管理方法新闻报道网络热点APP学馆普遍难题 Seo服务 好推建网站

7*24完全免费电話

0

当今部位 > 首页 > APP新闻资讯 > 技术性新闻资讯 > 有关Java里边Integer的源代码 时间::34 创作者:酷网编 源于:贵州省海鑫盛app开发设计企业


一、刚开始
publicfinalclass Integer extends Number implements Comparable1)、因为类装饰符中相关键字final,故该类不可以够被承继2)、承继了抽象性类Number3)、pareTo方式4)、重新写过了hashCode和equals方式,在其中hashCode是value,pareTo(Integer anotherInteger) {pare(this.value, anotherInteger.value);
 }pare(int x, int y) {return (x   y) ? -1 : ((x == y) ? 0 : 1);
 }publicint hashCode() {return value;
 }publicboolean equals(Object obj) {//仅有同类型型的才可以开展分辨是不是相同if (obj instanceof Integer) {return value == ((Integer)obj).intValue();
 }returnfalse;
 }

二、parseInt将标识符串数据变换为标值int

//沒有特定进制的,默认设置为10进制的标识符串publicstaticint parseInt(String s) throws NumberFormatException {return parseInt(s,10);
 }
 //radix是标识符串s相匹配的进制
publicstaticint parseInt(String s, int radix)throws NumberFormatException
 {/* * WARNING: This method may be invoked early during VM initialization
 * before IntegerCache is initialized. Care must be taken to not use
 * the valueOf method. */if (s == null) {thrownew NumberFormatException( null 
 }if (radix   ) {thrownew NumberFormatException( radix   + radix +
   less than  
 }if (radix   ) {thrownew NumberFormatException( radix   + radix +
   greater than  
 }int result = 0;boolean negative = false;int i = 0, len = ();int limit = -;int multmin;int digit;if (len   0) {char firstChar = (0);if (firstChar    0 ) { // Possible leading  +  or  - if (firstChar ==  - ) {
 negative = true;
 limit = 
 } elseif (firstChar !=  + )throw NumberFormatException.forInputString(s);if (len == 1) // Cannot have lone  +  or  - throw NumberFormatException.forInputString(s);
 i++;
 }//能够在乘法测算前可分辨其开展乘法以后是不是会外溢multmin = limit / radix;while (i   len) {// Accumulating negatively avoids surprises near MAX_VALUE//获得标识符在进制下相匹配的数据digit = ((i++),radix);if (digit   0) {throw NumberFormatException.forInputString(s);
 }if (result   multmin) {throw NumberFormatException.forInputString(s);
 }
 result *= radix;if (result   limit + digit) {throw NumberFormatException.forInputString(s);
 }
 result -= digit;
 }//如 1234567 便是-(((((((0*10-1)*10-2)*10-3)*10-4)*10-5)*10-6)*10-7)} else {throw NumberFormatException.forInputString(s);
 }return negative ? result : -result;
 }

三、valueOf将标识符串变换为标值Integer

//来源于于java.lang.Integerpublicstatic Integer valueOf(String s, int radix) throws NumberFormatException {return (parseInt(s,radix));
 }//跟上面一样publicstatic Integer valueOf(String s) throws NumberFormatException {return (parseInt(s, 10));
 }//跟上面一样//只缓存文件[-128,lass IntegerCache {staticfinalint low = -128;staticfinalint high;staticfinal Integer cache[];static {// high value may be configured by propertyint h = 127;
 String integerCacheHighPropValue =( if (integerCacheHighPropValue != null) {int i = parseInt(integerCacheHighPropValue);
 i = (i, 127);// Maximum array size is h = (i, - (-low));
 }
 high = h;
 cache = new Integer[(high - low) + 1];int j = low;for(int k = 0; k   cache.length; k++)
 cache[k] = new Integer(j++);
 }private IntegerCache() {}
 }//跟上面一样//当Integer num = 100;时,编译程序器会将其转换为Integer num = (100);publicstatic Integer valueOf(int i) {assert IntegerCache.high  = 127;//当其在缓存文件范畴内,则从缓存文件中获得,当没有时,则在建一个Integer目标if (i  = IntegerCache.low   i  = IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];returnnew Integer(i);
 }//下列一些分辨,根据所述学习培训就行了解了Integer num1 = (100);
 Integer num2 = (100);
 Integer num3 = (200);
 Integer num4 = (200);
 (num1 == num2);//true(num3 == num4);//false
四、toString(i,radix)

将整数金额转换为radix进制表明的标识符串

//来源于于java.har[] digits = { 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 //跟上面一样publicstatic String toString(int i, int radix) {//当变换的进制并不是在[2,36]中间,则按10进制开展变换//在其中 public static final int MIN_RADIX = 2;// public static final int MAX_RADIX = 36;if (radix   || radix   )
 radix = 10;/* Use the faster version */if (radix == 10) {//当是10进制变换时,return toString(i);
 }//储放变换后的标识符数字能量数组char buf[] = newchar[33];//分辨是不是是负数boolean negative = (i   0);int charPos = 32;if (!negative) {//当并不是负数,将其变为负数,这儿是以便避免数据信息外溢//若不那么做,当其是负数时,将负数变化为正数,则会产生数据信息外溢,终究int的数据信息范畴是[-2^31, 2^31-1],当转换为正数时,肯定会外溢,避免,倘若将转换为负数,就毫无疑问沒有数据信息外溢了。i = -i;
 }//取余以后,余数串倒转便是其相匹配的进制串while (i  = -radix) {
 buf[charPos--] = digits[-(i % radix)];
 i = i / radix;
 }
 buf[charPos] = digits[-i];if (negative) {//当是负数时,则必须加上标记-buf[--charPos] =  - 
 }//在原标识符数字能量数组中提取,留意这儿标识符串已不是同用原先的串,只是在建一个returnnew String(buf, charPos, (33 - charPos));
 }//来源于于java.lang.String.javapublic String(char value[], int offset, int count) {if (offset   0) {thrownew StringIndexOutOfBoundsException(offset);
 }if (count   0) {thrownew StringIndexOutOfBoundsException(count);
 }// Note: offset or count might be near -1 1.if (offset   value.length - count) {thrownew StringIndexOutOfBoundsException(offset + count);
 }this.value = Arrays.copyOfRange(value, offset, offset+count);
 }//来源于于java.util.har[] copyOfRange(char[] original, int from, int to) {int newLength = to - from;if (newLength   0)thrownew IllegalArgumentException(from +       + to);//依据长短在建一字符数字能量数组,以后应用开展数字能量数组复制char[] copy = newchar[newLength];
 (original, from, copy, 0,
 (original.length - from, newLength));return copy;
 }

五、toString(i)

将整数金额i表明为10进制的标识符串

//来源于于java.lang.Integerpublicstatic String toString(int i) {//当是最少值时,不适感合应用下列方式,由于会产生数据信息外溢(在启用stringSize时),故立即回到if (i == )return  - //获得当今整数金额的十位数int size = (i   0) ? stringSize(-i) + 1 : stringSize(i);char[] buf = newchar[size];//将整数金额转换为标识符数字能量数组 getChars(i, size, buf);returnnew String(buf, true);
 }//跟上面一样staticvoid getChars(int i, int index, char[] buf) {int q, r;int charPos = index;char sign = 0;if (i   0) {//当是负数时,必须再加标识,以有利于中后期在标识符数字能量数组中加上上sign =  - 
 i = -i;
 }//每一次循环系统获得i中的最终俩位,并将其储存到标识符数字能量数组中// Generate two digits per iterationwhile (i  = 65536) {
 q = i / 100;// really: r = i - (q * 100);r = i - ((q   6) + (q   5) + (q   2));
 i = q;//获得其对10的余数,即 r%10buf [--charPos] = DigitOnes[r];//获得其对10的商,即 r/10buf [--charPos] = DigitTens[r];
 }// Fall thru to fast mode for smaller numbers// assert(i  = 65536, i);for (;;) {
 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;
 }
 }//跟上面一样finalstaticint [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, , , };//跟上面一样 // Requires positive xstaticint stringSize(int x) {//根据范畴的搜索for (int i=0; ; i++)if (x  = sizeTable[i])return i+1;
 }//跟上面一样//har [] 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 ,
 } ;//跟上面一样//har [] 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 ,
 } ;

 六、toHexString(i) toOctalString(i) toBinaryString(i)

将整数金额转换为相匹配的进制标识符串表明

//来源于于java.lang.Integerpublicstatic String toHexString(int i) {return toUnsignedString(i, 4);
 }//跟上面一样publicstatic String toOctalString(int i) {return toUnsignedString(i, 3);
 }//跟上面一样publicstatic String toBinaryString(int i) {return toUnsignedString(i, 1);
 }//跟上面一样privatestatic String toUnsignedString(int i, int shift) {char[] buf = newchar[32];int charPos = 32;int radix = 1   shift;int mask = radix - 1;do {//当是2的N次幂时,i % radix 与i   mask是一样的实际效果buf[--charPos] = digits[i   mask];//无标记按位右移 ,当左边空出去的位,应用0添充,而并不是应用标记位添充//这与按位右移不一样 ,当左边空出去的位,应用标记位添充i  = shift;
 } while (i != 0);returnnew String(buf, charPos, (32 - charPos));
 }

七、highestOneBit(i) lowestOneBit(i)

有关位实际操作,获得二进制中最大位1与最少位1表明的数据

//来源于于java.lang.Integer//获得二进制中最大位的1表明的数据publicstaticint highestOneBit(int i) {// HD, Figure 3-1//最大位1的右侧同样成以便1i |= (i   1);//最大位1的右侧1+2=3位之内都为1i |= (i   2); //最大位1的右侧1+2+4=7位之内都为1i |= (i   4); //最大位1的右侧1+2+4+8=15位之内都为1i |= (i   8); //最大位1的右侧1+2+4+8+16=31位之内都为1i |= (i   16);//最终将无标记右移相距便是最大位1表明的数据//或是i^(i 1)return i - (i   1);
 }//跟上面一样//获得二进制中最少位1表明的数据publicstaticint lowestOneBit(int i) {// HD, Section 2-1//如36,其二进制是,则-i便是,故最终結果为,就是与i对比仅有最末位的1是处得一个部位return i   -i;
 }

 备注名称:

1、许多情况下应用负数,非常容易防止数据信息实际操作的外溢

2、当数据信息在[-128,127]其是放到缓存文件中

3、位实际操作在JDK源代码中的应用還是挺多的,因为在一些状况下位实际操作比一般的加减乘除更为高效率

4、正数的原码、反码和补码是一样的,而负数的反码是其在原码的基本上除开标记位不会改变,别的位取反;且负数的补码是其在反码的基本上某位加1.

5、Integer中的getInteger方式是获得系统软件特性相匹配的标值,decode将标识符串编解码为标值,接纳十进制、八进制和十六进制。

6、全自动装箱和拆箱

Integer a = 1;
Integer b = 1;
a == b:true先装箱(1),因为Integer有缓存文件-128~127int c = 1;
c == b:true先装箱跟上面一样,以后拆箱(),立即开展标值的较为

  戏剧化排版设计有什么方法?  
  互连网总流量太贵,如何合理的运用减少成本费?  
  让客户觉得温馨的网页页面网页页面载入设计方案  
  如何让网站标识充分发挥较大的功效?  
  分析Python源码  
  有关php版手机微信开发设计怎样接受信息,全自动分辨跟回应相对信息的方式  
  有关Junit的 源代码分析  
 全新新闻资讯
互连网+怎样惠及农牧业? 普遍的二手买卖APP? APP中ui设计方案的关键性 公司企业网站建设价格通常为如何报的 怎样在贵阳市找一家做高档企业网站建设 作用强劲的app 运用开发设计制作服务平台 每天热搜榜
作用强劲的app 运用开发设计制作服务平台 普遍的二手买卖APP? 互连网+怎样惠及农牧业? 公司企业网站建设价格通常为如何报的 怎样在贵阳市找一家做高档企业网站建设 APP中ui设计方案的关键性