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

同城服务网站开发石家庄建网站挣钱优帮云

同城服务网站开发,石家庄建网站挣钱优帮云,办公电脑租赁,深圳最大的广告公司String被用作常量时#xff0c;它被编译器当成字面量存放于常量池。常量池中主要存放两大类常量#xff1a;字面量和符号引用#xff1b;常量池中的每一个常量都是一个表#xff0c;字符串常量存于CONSTANT_Utf8_info表(Tip:字节码文件由无符号数和表映射的数据构成#x…String被用作常量时它被编译器当成字面量存放于常量池。常量池中主要存放两大类常量字面量和符号引用常量池中的每一个常量都是一个表字符串常量存于CONSTANT_Utf8_info表(Tip:字节码文件由无符号数和表映射的数据构成详见java虚拟机规范或者周志明老师的深入理解Java虚拟机)。CONSTANT_Utf8_info {u1 tag;u2 length;u1 bytes[length];}CONSTANT_Utf8_info表由tag、length和bytes组成。tag用于标识表的类型大小为一个字节的无符号数length表示使用utf-8缩略编码表示的字符串长度大小为两个字节的无符号数bytes存放被编码的字符串。字符串常量的最大值为2^16-1(65535)字节。当使用javac编译Test.java文件时由于其中的字符串长度为65535超出javac中规定的大小编译失败下面是含长度为65534的字符串的Test类编译前后的内容位于0x7E~0x1007E(包括起止的两个字节)之间的数据为一个CONSTANT_Utf8_info表的映射tag值为0x01(位于0x7E)之后的两个字节表示length值为0xFFFE(65534),随后的65534个字节字符串内容。public class Test{//65534个aString straaaa...;}//字节码内容Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00000000: CA FE BA BE 00 00 00 34 00 13 0A 00 05 00 0E 08 J~:...4........00000010: 00 0F 09 00 04 00 10 07 00 11 07 00 12 01 00 03 ................00000020: 73 74 72 01 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 str...Ljava/lang00000030: 2F 53 74 72 69 6E 67 3B 01 00 06 3C 69 6E 69 74 /String;...00000040: 3E 01 00 03 28 29 56 01 00 04 43 6F 64 65 01 00 ...()V...Code..00000050: 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 .LineNumberTable00000060: 01 00 0A 53 6F 75 72 63 65 46 69 6C 65 01 00 09 ...SourceFile...00000070: 54 65 73 74 2E 6A 61 76 61 0C 00 08 00 09 01 FF Test.java.......00000080: FE 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ~aaaaaaaaaaaaaaa...00010070: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 0C aaaaaaaaaaaaaaa.00010080: 00 06 00 07 01 00 04 54 65 73 74 01 00 10 6A 61 .......Test...ja00010090: 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 00 21 va/lang/Object.!000100a0: 00 04 00 05 00 00 00 01 00 00 00 06 00 07 00 00 ................000100b0: 00 01 00 01 00 08 00 09 00 01 00 0A 00 00 00 27 ...............000100c0: 00 02 00 01 00 00 00 0B 2A B7 00 01 2A 12 02 B5 ........*7..*..5000100d0: 00 03 B1 00 00 00 01 00 0B 00 00 00 0A 00 02 00 ..1.............000100e0: 00 00 01 00 04 00 02 00 01 00 0C 00 00 00 02 00 ................000100f0: 0Djavac无法编译字符串常量长度超过65534的java文件原因javac中对字符串常量长度做了限制可以下面的checkStringConstant方法中看出。(Tip:javac源码位于OpenJDK中并且各个版本路径不一定相同修改上面的字节码文件将length值由0xFFFE改为0xFFFF,并将bytes数据添加一个字节执行java命令程序正常运行。)//位于javac源码中的Gen.java文件Errors.LimitString 为constant string too long//Pool.MAX_STRING_LENGTH值为0xFFFF/** Check a constant value and report if it is a string that is* too large.*/private void checkStringConstant(DiagnosticPosition pos, Object constValue) {if (nerrs ! 0 || // only complain about a long string onceconstValue null ||!(constValue instanceof String) ||((String)constValue).length() Pool.MAX_STRING_LENGTH)return;log.error(pos, limit.string);nerrs;}String被当作变量时,其长度由String存储方式决定。在JAVA SE 9之前String内部是由char数组存储的数组最大长度为Integer.MAX_VALUE(0x7fffffff)即2^31-1并且char的取值范围在0~65535之间占两个字节因此String的最大长度为429496967294字节运行时需要大约4GB的内存才能存储JAVA SE 9及其后续版本将char数组改为byte数组因此String的最大长度为2147483647字节。
http://wiki.neutronadmin.com/news/218607/

相关文章:

  • 网站设计的基本过程投票网站开发
  • 天津工程网站建设郑州建设网站企业定制
  • 做网站卖水果哪里进货临沧网站建设公司
  • 顺飞网站建设怎么样网站安全建设目标
  • flash网站建设技术...单页面销售信网站赚钱系统
  • 临沂网站建设报价公司网站建设后期维护
  • 小说网站建设吧wordpress插件验证
  • 青岛建设银行网站首页关键词代发排名首页
  • 图片 网站源码 采集网站rss地址生成
  • 潍坊方圆网站建设做网站登入见面
  • wex5做视频网站wordpress 标签 修改
  • 网页设计尺寸适应点击宝seo
  • 长沙做网站公司哪家好做色流网站要注意什么
  • 东莞网站建设方案咨询深圳优化网站公司
  • 吉林省长春市长春网站建设哪家好phpcms v9网站模板
  • 深圳建设局投标网站wordpress apache模块
  • 百度网站 收录外贸出口流程步骤
  • 做网站内嵌地图网站安全证书
  • 集团网站建设一级A视网站 一级做爰片
  • 提供电商网站建设个人全屏网站模板
  • jsp两种网站开发模式温州网页制作
  • 大连网站开发乛薇软件开发类型
  • 临沂网站制作专业怎么做网站例如京东
  • 百度网站制作wordpress教程 书籍
  • 贵州做网站s网站优化
  • 食品网站建设规划php 网站超市
  • 华为官方网站进入开发网站公司收费
  • 邯郸网站设计邯郸网站制作WordPress谁在用
  • 五金设备网站建设360怎么做网站排名
  • 营销型企业网站特点青岛模板网站