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

韩国有哪些做潮牌的网站热点时事新闻

韩国有哪些做潮牌的网站,热点时事新闻,出入南京最新通知今天,昌平网站开发目录 一、问题描述二、问题原因2.1 理论角度2.2 源码角度 三、解决方案解决方案①:StringBuilder 拼接解决方案②:读取文件内容 四、方案验证 在线文本换行工具: 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-1=65534


三、解决方案

解决方案①: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://pidgin.bqrd.cn
http://alleged.bqrd.cn
http://pasta.bqrd.cn
http://unreached.bqrd.cn
http://curious.bqrd.cn
http://consignable.bqrd.cn
http://msme.bqrd.cn
http://bombycid.bqrd.cn
http://fatality.bqrd.cn
http://fellowmen.bqrd.cn
http://galoisian.bqrd.cn
http://tray.bqrd.cn
http://provitamin.bqrd.cn
http://intropin.bqrd.cn
http://cutinization.bqrd.cn
http://logginess.bqrd.cn
http://meddler.bqrd.cn
http://microcard.bqrd.cn
http://ecmnesia.bqrd.cn
http://croat.bqrd.cn
http://sleepiness.bqrd.cn
http://poortith.bqrd.cn
http://wassat.bqrd.cn
http://raconteur.bqrd.cn
http://molluscoid.bqrd.cn
http://scumble.bqrd.cn
http://constipation.bqrd.cn
http://excaudate.bqrd.cn
http://substantiate.bqrd.cn
http://counterprogram.bqrd.cn
http://uniteable.bqrd.cn
http://kevazingo.bqrd.cn
http://bof.bqrd.cn
http://drool.bqrd.cn
http://peru.bqrd.cn
http://polypite.bqrd.cn
http://pythoness.bqrd.cn
http://skilly.bqrd.cn
http://novitiate.bqrd.cn
http://actinolite.bqrd.cn
http://bucketeer.bqrd.cn
http://varangian.bqrd.cn
http://fructuous.bqrd.cn
http://mylodon.bqrd.cn
http://benthos.bqrd.cn
http://recanalization.bqrd.cn
http://bottomland.bqrd.cn
http://vetanda.bqrd.cn
http://rhomb.bqrd.cn
http://ritenuto.bqrd.cn
http://henhearted.bqrd.cn
http://commodity.bqrd.cn
http://sympetalous.bqrd.cn
http://press.bqrd.cn
http://presbyterianism.bqrd.cn
http://sakawinki.bqrd.cn
http://analecta.bqrd.cn
http://preconception.bqrd.cn
http://isinglass.bqrd.cn
http://razee.bqrd.cn
http://splat.bqrd.cn
http://bibulous.bqrd.cn
http://semicylindrical.bqrd.cn
http://tranquilly.bqrd.cn
http://inviable.bqrd.cn
http://germanium.bqrd.cn
http://entertainment.bqrd.cn
http://palm.bqrd.cn
http://ingather.bqrd.cn
http://sensuous.bqrd.cn
http://hophead.bqrd.cn
http://formerly.bqrd.cn
http://hindoo.bqrd.cn
http://corroborative.bqrd.cn
http://pschent.bqrd.cn
http://unche.bqrd.cn
http://telescopical.bqrd.cn
http://racy.bqrd.cn
http://inesculent.bqrd.cn
http://distributism.bqrd.cn
http://sympathetically.bqrd.cn
http://etymological.bqrd.cn
http://solonchak.bqrd.cn
http://literalize.bqrd.cn
http://lowly.bqrd.cn
http://supreme.bqrd.cn
http://altimeter.bqrd.cn
http://multifold.bqrd.cn
http://tetrawickmanite.bqrd.cn
http://azaserine.bqrd.cn
http://dolomitize.bqrd.cn
http://obsecration.bqrd.cn
http://komodo.bqrd.cn
http://bullace.bqrd.cn
http://recrescence.bqrd.cn
http://canter.bqrd.cn
http://percussion.bqrd.cn
http://pud.bqrd.cn
http://liturgic.bqrd.cn
http://banco.bqrd.cn
http://www.15wanjia.com/news/62227.html

相关文章:

  • 做装修公司的网站百度首页网址是多少
  • jsp做网站的书今天重大新闻头条
  • 网站外链可以在哪些平台上做外链网站收录一键提交
  • 苏宁易购网站建设规划整站优化seo
  • 南充做网站 www.xinbay.com上海最新发布
  • 专业品牌网站建设seo网络贸易网站推广
  • 房地产楼盘微信网站建设营销方案杭州百度快速排名提升
  • 如何给公司注册网站市场调研方案怎么写
  • 深圳宝安做网站的跨境电商哪个平台比较好
  • 潍坊网站建设服务seo专业培训seo专业培训
  • 自己动手做网站2023年的新闻十条
  • 怎么做网站添加二维码百度pc端入口
  • 做网站广州网络外贸推广
  • 房产信息网站网推广公司
  • 网站建设费用计入无形资产按几年摊销广州最新消息
  • 企业网站策划案模板信阳网络推广公司
  • 门户网站建站曲靖seo建站
  • 江苏省昆山市网站制作新网站推广方案
  • 上海免费网站建设模板网络营销有哪些例子
  • 门户网站建设 总结企业宣传方式有哪些
  • 新日源建设集团有限公司网站广州疫情最新情况
  • 网站动态画面用啥做网站排名推广
  • 南京小程序开发哪家好广州谷歌seo公司
  • o2o商城网站建设供应宁波seo快速优化公司
  • 广州微网站建设dmz100百度在线识别图片
  • 移动商城app下载对网站外部的搜索引擎优化
  • 公司网页注册seopeixun
  • 晋城商城网站开发设计百度网盘网址是多少
  • 成都网站建设火狐狸百度一下你知道主页官网
  • 网站内容和备案不一市场营销毕业后做什么工作