当前位置:网站首页>学习记录并且简单分析

学习记录并且简单分析

2020-11-08 15:22:28 程序猿欧文

学习记录并且简单分析

记录学习遇到的困难,一个小白!

本人基本没有读过源码,纯小白一个,写这篇文章纯属是为了提高自己!!!希望各位积极指出错误。

好奇的我翻看了Integer.valueOf()方法源码

public static Integer valueOf(int i) {  if (i >= IntegerCache.low && i <= IntegerCache.high)   return IntegerCache.cache[i + (-IntegerCache.low)];  return new Integer(i); }

首先参数解释:

static final int low = -128;static final int high;static final Integer[] cache;static Integer[] archivedCache;

high没有赋值,所以我们继续跟踪到high属性

 static {  int h = 127;  //启动时如果指定-Djava.lang.Integer.IntegerCache.high=XXX(自己输入一个数据)参数  //将会执行下面的语句,则动态的设置h是127还是设置的输入数据  String integerCacheHighPropValue =   //该方法是通过传递一个key,获取启动时手动设定的数值   VM.getSavedProperty("java.lang.Integer.IntegerCache.high");  if (integerCacheHighPropValue != null) {   try {       h = Math.max(parseInt(integerCacheHighPropValue), 127);   	 //	    // public static int max(int a, int b) {  		//	 return (a >= b) ? a : b; 		//	}       // Maximum array size is Integer.MAX_VALUE    //32位系统2147483647=2^32    h = Math.min(h, Integer.MAX_VALUE - (-low) -1);      } catch( NumberFormatException nfe) {    // If the property cannot be parsed into an int, ignore it.   }  } 	//找到high属性的值由h局部属性赋值  high = h;  // Load IntegerCache.archivedCache from archive, if possible  VM.initializeFromArchive(IntegerCache.class);   int size = (high - low) + 1;//可以存256个数。  //至于为啥是256?这里我不讲述,建议自己去搜索下计算机存放数据相关的概念!  // Use the archived cache if it exists and is large enough.........

版权声明
本文为[程序猿欧文]所创,转载请带上原文链接,感谢
https://my.oschina.net/mikeowen/blog/4708221