易截截图软件、单文件、免安装、纯绿色、仅160KB

深入研究java对String字符串对象的创建以及管理

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数据类型,详情参见The Java Virtual Machine Specification
4
.4章节.
对于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
根据上面说的String常量结构,我们分析一下
开始的08为CONSTANT_String_info结构中的tag,而11应该是它的相对引用,01为
CONSTANT_Utf8_info的tag,06为对应字符串的长度,
73

73

73

31

31
31为字符串对
应的编码,接着分析,会发现后面的是对应
"
sss222
"


相关文档:

~java~用人单位的应聘要求~

1、两年及以上J2EE实际开发经验
2、熟悉JAVA WEB开发,包括JAVASCRIPT、JSP、SERVLET、WEBSERVICE、PORTLET等;
3、熟悉常用框架(如: STRUTS2/SPRING/HIBERNATE/IBATIS等);
4、至少熟悉一种主流关系数据库系统,例如ORACLE、MYSQL、MSSQL等
 
1.熟练掌握Java、HTML、JavaScript等语言;
2.熟练掌握JSP/Ser ......

传智播客Java总结 张孝祥老师三天讲课总结

今天来到学校才知道,这是张老师给我们上课的最后一天了,本来计划讲五天的,临时调整只讲了三天,好多同学知道消息后都通过飞秋给老师发信息,希望老师能多带我们几天,但是老师告诉我们因为公司里一些重要的事情需要处理,所以只能调整一下,以后的课是冯威老师给我们上,回顾这三天上课的内容,真的受益匪浅,这几天上课 ......

Java 使用SSH连接Linux 使用passwd命令修改密码


使用InputStream和OutputStream来获得命令行运行结果和输入内容是首先需要具备的.
然后要解决SSH连接问题.
在OpenSource项目里找到了Ganymed SSH-2 for Java .下载后有例子,但是没有找到有关交互命令的例子.所以自己探索了一下
在网上看有老外讨论用这个如何改密码,基本上的问题都是因为找不到返回的提示
Linux修改密 ......

浅谈Java 关键字


java关键字以前没什么注意,因为是很基础的东东。只是今天做SCJP题目,一看答案吓我大跳,翻转了我以往的错误观念。查阅了不少资料终于弄清楚了。题目如下:
Which are not Java keywords?
A. TRUE      B. sizeof   C. const    D. super   E. void
& ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号