当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Java String字符串对象的成立及管理[Java编程]

赞助商链接



  本文“Java String字符串对象的成立及管理[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Constant Pool常量池的概念:

在讲到String的一些特别情形时,总会提到String Pool大概Constant Pool,但是我想很多人都不太懂得Constant Pool毕竟是个怎么样的东西,运行的时刻存储在那边,所以在这里先说一下Constant Pool的内容.

String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称为String Constant Pool.仿佛没有正式的命名.

在java编译好的class文件中,有个区域称为Constant Pool,他是一个由数组构成的表,范例为cp_info constant_pool[],用来存储程序中利用的各种常量,包含Class/String/Integer等各种基本Java数据范例.

关于Constant Pool,表的基本通用构造为:

cp_info {
     u1 tag;
     u1 info[];
}

tag是一个数字,用来表示存储的常量的范例,比方8表示String范例,5表示Long范例,info[]按照

范例码tag的差别会发生呼应改变.

关于String范例,表的构造为:

CONSTANT_String_info {
     u1 tag;
     u2 string_index;
}

tag固定为8,string_index是字符串内容信息,范例为:

CONSTANT_Utf8_info {
     u1 tag;
     u2 length;
     u1 bytes[length];
}

tag固定为1,length为字符串的长度,bytes[length]为字符串的内容.

(以下代码在jdk6中编译)

为了具体理解Constant Pool的构造,我们参看一些代码:

String s1 = "sss111";
   String s2 = "sss222";
   System.out.println(s1 + " " + s2);

由于"sss111"和"sss222"都是字符串常量,在编译期就已经成立好了存储在class文件中.

在编译后的class文件中会存在这2个常量的对应表示:

08 00 11 01 00 06 73 73 73 31 31 31 08 00 13 01 ; ......sss111....
00 06 73 73 73 32 32 32             ; ..sss222


  以上是“Java String字符串对象的成立及管理[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .