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

创立外包网站企业网站制作公司合肥

创立外包网站,企业网站制作公司合肥,seo站长之家,项目前期工作6个步骤目录 一、问题描述二、问题原因2.1 理论角度2.2 源码角度 三、解决方案解决方案①#xff1a;StringBuilder 拼接解决方案②#xff1a;读取文件内容 四、方案验证 在线文本换行工具#xff1a; https://lzltool.cn/Toolkit/WrapWordsInText 一、问题描述 今天在开发过程中… 目录 一、问题描述二、问题原因2.1 理论角度2.2 源码角度 三、解决方案解决方案①StringBuilder 拼接解决方案②读取文件内容 四、方案验证 在线文本换行工具 https://lzltool.cn/Toolkit/WrapWordsInText 一、问题描述 今天在开发过程中由于尝试将一个文件的 Base64 字符串设置为常量结果导致 IDEA 编译的时候出现了如下报错 java: 常量字符串过长 二、问题原因 2.1 理论角度 在 Java 中常量字符串过长的问题通常是 由于编译器对字符串常量的长度有限制 导致的。 众所周知Java代码是由 Java编译器javac 编译为 class 字节码之后运行的。这个报错就是因为 javac 对字符串常量有一个上线通常是 65534 个字符串。这个限制是由于 Java 编译器在处理字符串常量时使用了 16位 的无符号证书来表示字符串的长度因此最大值为 2^16 - 1 65535但实际使用中会减去一个字符的空间用于其他用途所以最大长度为 65534。 在 IDEA 中编写代码时如果定义了一个超过 65534 个字符的字符串常量编译器就会报错java: 常量字符串过长。 JVM 规范文档 https://docs.oracle.com/javase/specs/jvms/se19/html/jvms-4.html#jvms-4.4.3 查看 JVM 规范文档可以看到在 Java 中常量 String 的结构体如下 其中 string_index 指针指向常量池的一个条目这个条目的结构体格式为 CONSTANT_Utf8_info。这个结构体的定义如下所示 由上图可知一个 String 类型的常量的最大长度为 2^16 - 1 65535但实际使用中会减去一个字符的空间用于其他用途所以最大长度为 65534。 2.2 源码角度 下面我们再从 javac 源码角度进行分析源码下载地址https://jdk.java.net/java-se-ri/8-MR6。 在 \lib\src\jdk.compiler\com\sun\tools\javac\jvm|Gen.java 中可以看到如下代码 而这个 PoolWriter.MAX_STRING_LENGTH 的值为 从代码可以看到要求小于 2^16-1所以得出 javac 允许常量 String 保存的最大字节数为 0xFFF-1即 2^16-1-165534。 三、解决方案 解决方案①StringBuilder 拼接 我们可以使用 StringBuilder 进行字符串拼接的方式来解决这个问题只要每次拼接的长度不超过 65534 即可。 public static String getConstant() {StringBuilder builder new StringBuilder();builder.append(字符串1);builder.append(字符串2);// ...return builder.toString(); }在线文本换行工具 https://lzltool.cn/Toolkit/WrapWordsInText 解决方案②读取文件内容 还有一种方式是将字符串写入文件后读出来如下所示 try (BufferedReader reader new BufferedReader(new FileReader(longString.txt))) {StringBuilder builder new StringBuilder();String line;while ((line reader.readLine() ! null)) {builder.append(line);}String longString builder.toString(); } catch (IOException e) {e.printStackTrace(); }除了两种方式其余几种方式小编亲试均无效 使用加号连接字符串使用换行符使用Eclipse编译器 四、方案验证 我们先创建一个 65535 长度的字符串试一下结果如下所示不出意外地报错了 下面我们去掉一个字符长度调整为 65534再次执行就可以正常打印了如下图所示 现在我们已经确定当长度超过 65534 的时候就会报错了那么我们将长度改为 65535然后使用 StringBuilder 来实现结果如下所示 整理完毕完结撒花~ 参考地址 1.java: 常量字符串过长 报错的解决方法及原因https://blog.csdn.net/weixin_43957537/article/details/127141232
http://www.dnsts.com.cn/news/121915.html

相关文章:

  • zencart 网站怎样设置自己的网站
  • 网站怎么做支付接口检查网站打开速度
  • 网站开发部门工作职责百度在线下载
  • wap网站推广方法wordpress数据库排序规则
  • 自主设计和创建网站建设云购网站
  • 国外教程 网站长沙房产交易中心官网
  • 国内有wix做的好的网站网上做中考题的网站
  • 网站 需求分析招聘广告模板
  • 上海响应式网站营销加盟网站建设
  • 网站内容包括哪些吴江区建设工程招标网站
  • 免费企业网站建设要求商城网站建设公司招聘
  • 寻找合肥网站建设免费活动策划方案的网站
  • 中国建设教育协会网站查询传奇小程序源码
  • 网站建设项目方案模板墙绘做网站推广有作用没
  • 邵阳市住房和城乡建设局网站wordpress首页标题修改
  • 建官网个人网站wordpress公众号推送
  • 现在什么省网站备案最快网站公司制作网站有何优势
  • 公司网站维护费大概需要多少网页设计素材包
  • 联想粒子云可以做网站福田专门做网站推广公司
  • 云网站7china做公司网站要提供什么
  • 广州市建设工程交易中心网站网页设计一个多少工资
  • 太仓市住房和城乡建设局规网站白嫖云服务器
  • 地下彩票网站建设编程培训班学费是多少
  • 现在网站优化wordpress 消耗 资源
  • 萧县城乡建设局网站logo图案素材免费网站
  • 虹口 教育 网站建设ai网站
  • 北碚网站建设哪家好 天堂资源地址在线官网下载
  • 北京网站怎么优化互联网商城建设
  • 网站建设 技术规范书网站平台建设的当前问题
  • 江苏省建设工程管理局网站营销推广费用