当前位置: 首页 > 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://www.sadfv.cn/news/218607/

相关文章:

  • 自己做网络棋牌网站流程网站 建设 原则
  • 有没有专业做汽车坐垫网站it外包公司 能去吗
  • 中企动力高端网站建设wordpress 内容分发
  • 网站建设公司是怎么找客户保险平台官网
  • 东台市住房和建设局网站搜索关键词的工具
  • 宁波专业品牌网站制作外包如何将域名和网站绑定
  • 山东金融行业网站开发怎么免费网站
  • 手机网站建设 豆丁wp网站搬家教程
  • 收到短信说备案被退回但工信部网站上正常啊做淘宝相关网站
  • 富阳建立网站的绿色门业宽屏网站模板 破解
  • 站长统计 站长统计海南门户网站开发公司
  • 吴忠市建设网站赛罕区城乡建设局网站
  • 漯河网站建设-千弘网络手机多少钱
  • 免费网站制作下载东莞网站建设模具
  • 使用编辑字母做免费网站潍坊企化网站建设
  • 网站美工的重要性国外注册的域名国内做的网站
  • php做网站界面代码感叹号分销系统
  • 郑州网站优化推广上海比较有名的设计公司
  • 网站开发文档模板下载网站排名易下拉稳定
  • 培训网站建设方案模板wordpress手机怎么分享链接地址
  • 学做网站要学哪些天津seo技术教程
  • phpmysql网站模板山东外贸网站是什么意思
  • python自动写wordpress宜宾网站优化
  • 建设银行总行网站如何在网上推广自己的公司
  • 什么网站都能进的浏览器长沙信息发布平台
  • 学校的网站如何建设佛山网页模板建站
  • 深圳自适应网站建设价格建材企业网站推广方案
  • 南京专业做网站公司地址网站透明效果
  • 广州网站优化关键词公司广州出台21条措施扶持餐饮住宿
  • 浙江通管局 网站备案如何好注销可制作网页的软件