当前位置: 首页 > news >正文

国际军事新闻最近新闻手机优化大师官方免费下载

国际军事新闻最近新闻,手机优化大师官方免费下载,网站建设购买数据库的流程,wordpress主题换图片文章目录 Class常量池运行时常量池String常量池基本类型常量池Integer 常量池Long 常量池 加餐部分 Class常量池 每个Class字节码文件中包含类常量池用来存放字面量以及符号引用等信息。 运行时常量池 java文件被编译成class文件之后,也就是会生成我上面所说的 …

文章目录

  • Class常量池
  • 运行时常量池
  • String常量池
  • 基本类型常量池
    • Integer 常量池
    • Long 常量池
  • 加餐部分

Class常量池

每个Class字节码文件中包含类常量池用来存放字面量以及符号引用等信息。
在这里插入图片描述

运行时常量池

java文件被编译成class文件之后,也就是会生成我上面所说的 class常量池,那么运行时常量池又是什么时候产生的呢?

jvm在执行某个类的时候,必须经过加载、连接、初始化,而连接又包括验证、准备、解析三个阶段。而当类加载到内存中后,jvm就会将 class常量池 中的内容存放到 运行时常量池 中。

在上面我也说了,class常量池 中存的是字面量和符号引用,也就是说他们存的并不是对象的实例,而是对象的符号引用值。而经过解析(resolve)之后,也就是把符号引用替换为直接引用。

运行时常量池区域是在方法区中。

String常量池

在JDK1.7后String常量池的所在区域被挪至堆内存中,原位置是在运行时常量池中,而在JDK1.7后JDK在堆内开辟了一块空间用作了String常量池。

String name="zhangsan";
String nameTwo=new String("lisi");

上述两行代码中“zhangsan”字面量是存储在String常量池中,而“lisi”则是在String常量池以及堆中各有一份,使用nameTwo时获取lisi时也是从堆中获取。
在这里插入图片描述

基本类型常量池

基本类型的常量池更偏向于缓存的概念,每个基本类型的包装类都有对应的内部缓存类,若发现所需数据已完成缓存则直接从缓存对象的cache数组中获取。整数、字符类型的最大缓存值为127而最小缓存值为-128,浮点型没有缓存。

private static class IntegerCache {static final int low = -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint h = 127;String integerCacheHighPropValue =sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");if (integerCacheHighPropValue != null) {try {int i = parseInt(integerCacheHighPropValue);i = Math.max(i, 127);// Maximum array size is Integer.MAX_VALUEh = Math.min(i, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high = h;cache = new Integer[(high - low) + 1];int j = low;for(int k = 0; k < cache.length; k++)cache[k] = new Integer(j++);// range [-128, 127] must be interned (JLS7 5.1.7)assert IntegerCache.high >= 127;}private IntegerCache() {}}

Integer 常量池

当发现所需的值小于最小缓存值并且大于最大缓存值后,则直接创建新的对象

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

Long 常量池

当发现所需的值小于最小缓存值并且大于最大缓存值后,则直接创建新的对象

public static Long valueOf(long l) {final int offset = 128;if (l >= -128 && l <= 127) { // will cachereturn LongCache.cache[(int)l + offset];}return new Long(l);}

加餐部分

String intern方法

    String hello=new String("he")+new String("llo");String helloTwo=hello.intern();System.out.println(helloTwo==hello);

JDK1.6
在这里插入图片描述

JDK1.6intern方法:变量hello调用intern方法,首先会去String常量池中找是否有hello这个常量,当发现未找到时则把堆中的hello对象的“hello”复制到String常量池,若发现String常量池中有“hello”时则会将常量池中的“hello”返回给helloTwo。

如上图所示在JDK1.6的时候intern方法在调用后,发现未找到时则把堆中的hello对象的“hello”复制到String常量池。

JDK1.7在这里插入图片描述
JDK1.7 intern方法:变量hello调用intern方法,首先会去String常量池中找是否有hello这个常量,当发现未找到时则把堆中的hello对象地址值存入到String常量池,若发现String常量池中有“hello”时则会将常量池中的“hello”返回给helloTwo。

http://www.mnyf.cn/news/47442.html

相关文章:

  • 网站关键词优化seo百度竞价教程
  • 网站域名如何管理软文是什么意思
  • 购物网站的模块站长工具果冻传媒
  • 怎么自己写网站百度公司招聘
  • 服务器做网站需安装哪些软件设计素材网站
  • 在网站中调用在线客服seoul是啥意思
  • 现在网站建设的技术怎么才能建立一个网站卖东西
  • 品划网络做网站seo是什么职业岗位
  • 专业手机网站定制seo sem是什么意思
  • 找网络公司做网站需要注意做公司网站的公司
  • wordpress 主题手机端css网站seo推广优化教程
  • 网站建设是编程吗创网站永久免费建站
  • 分类目录网站平台全国疫情实时动态
  • 深圳做网站专业爱上链外链购买交易
  • 网站和网页的不同凡科建站小程序
  • 泰安网站建设怎么样东莞搜索排名提升
  • 网站用开源cms济南做网站推广哪家好
  • discuz 做的网站企业网站seo方案案例
  • 做语文题的网站seo的工作流程
  • 做私服网站租给发布站策划方案模板
  • 网线制作原理绍兴seo网站优化
  • 山东菏泽网站建设成都网站seo公司
  • php企业网站模板免费下载百度竞价价格
  • 做网站ps注意事项北京网络排名优化
  • 做网站宁波有什么的网络公司一元手游平台app
  • 武汉做网站公司搜索网站
  • 网站页面设计制作费青岛seo招聘
  • 阿拉善盟网站制作网站怎么快速被百度收录
  • 无锡网站的优化济南seo外包服务
  • 网站建设程序都有哪些上海aso苹果关键词优化