先说结论:

对于Java字符串的最大长度,要分为2种情况进行讨论。
① 编译期:一般情况下,最大长度为65534。
② 运行期:Integer.MAX_VALUE。

接下来通过对一个字节码文件反编译来解释一下为什么?

一、编译期String字符串的最大长度为什么是65534?

当我们使用javac命令对.java文件进行编译后,会生成相关类的.class文件。
关于.class文件的结构,大家如果感兴趣的话可以自行搜索了解一下,或者我后面如果有精力会专门写一篇,不了解.class文件的结构并不影响接下来的理解。

我们只需要知道编译后的.class文件里有一个结构叫做常量池
常量池 中主要存放两大类常量:字面量(Literal)和符号引用(Symbolic References)。字面量比较接近于Java语言层面的常量概念,如文本字符串、被声明为final的常量值等。而符号引用则属于编译原理方面的概念(这个与本文无关,故不深入讲解)。

也就是说,我们在java文件中声明的字符串字面量会存放在.class文件的常量池中。
常量池中每一个常量都是一个表,表结构的第一位是一个u1类型(一个字节的无符号整数)的标志位,用来表示当前常量属于哪种常量类型,比如String字面量标志就是8,用CONSTANT_String_info标识符表示。

CONSTANT_String_info型常量结构如下:

【Java】String字符串的最大长度是多少?相关推荐

  1. Java String字符串长度不足指定位数补0

    Java String字符串长度不足指定位数补0 自己项目中有个需求:需要5位随机数-范围在1-99999 随机数可以利用Random()来获取,但是想要生成的随机数都是5位数,那就需要做一点小处理啦 ...

  2. String字符串的最大长度是多少?

    转自:String字符串的最大长度是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的" ...

  3. java在字符串前后加引号,Java String字符串内容实现添加双引号

    Java String字符串内容实现添加双引号 作者: 91奔跑的蜗牛 更新时间:2020-09-12 15:45:46 原文链接 右侧开启环境实践本页内容 使用转义符 \ (反斜杠) String ...

  4. 关于Java的String字符串常量的长度问题(Error:(14, 22) java: 常量字符串过长)

    虽然这种问题应该很难遇到,但是遇到了也会感到莫名其妙.不知道大家有没有遇到那种在java代码里用字符串写sql语句的情况,但是如果sql语句字符串的长度太长的话就会报错. 代码如下: 代码A Stri ...

  5. Java String 字符串

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://my.oschina.net/brucelee80/blog String String是引用类型而非基 ...

  6. Java String字符串和整型int的相互转换

    String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的. String转换为int String 字符串转整型 int 有以下两种方式: Integer.pa ...

  7. Java教程:Java String字符串和整型int的相互转换

    Java教程String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.本节前面部分主要讲解了 String 转换 int 和 int 转换 String 方法, ...

  8. Java - String字符串的部分操作

    String转换为int String 字符串转整型 int 有以下两种方式: Integer.parseInt(str) Integer.valueOf(str).intValue() 注意:Int ...

  9. Java 分割字符串---按字节长度分割带有中文字符串

    中文在不同编码中占用的字节数是不同的,GBK编码中,一个汉字占两个字节,UTF-8编码格式中,一个汉字占3个字节. public static List<String> chineseSp ...

最新文章

  1. 用友uclient客户端下载手机_萤火语音2021手机版下载_萤火语音app最新版客户端下载...
  2. PHP 中 9 大缓存技术总结
  3. 【深度学习】收藏|神经网络调试Checklist
  4. LeetCode 13 罗马数字转整数
  5. C语言运算符优先级列表
  6. li标签之间的空隙问题(转)
  7. 数量查看_正则表达式学习之分割字符及数量词练习
  8. python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
  9. 我是如何用百度知道做小众企业站流量推广的?
  10. josn转bln的方法
  11. 五种“网络钓鱼”实例解析及防范技巧(转)
  12. linux手动连接网络打印机驱动_中兴新支点Linux操作系统添加网络打印机的方法...
  13. 合肥工业大学机器人技术五十六题
  14. 以太坊的区块和存储(一):区块头
  15. termux配置python安装kali_安卓用termux安装kali linux教程
  16. 创建json数组与json数组渲染到HTML
  17. EverBox(同步网盘)邀请
  18. 苹果cmsv10仿9080YY电影网站红色大气响应式免费模板
  19. 基于微信小程序菜谱查询app设计
  20. Android提取字符串中的特殊字符(以手机号为例)并修改样式和添加点击事件

热门文章

  1. RabbitMQ之交换机
  2. 大学计算机一级网络题,大学计算机一级考试试题及答案
  3. TCP报文格式及三次握手详解
  4. 基于AI的自然语言处理
  5. 第六届蓝桥杯决赛真题:穿越雷区
  6. 6.1 Python图像处理之图像编码技术和标准-DPCM编码
  7. react-native与phonegap入门-曾亮-专题视频课程
  8. 凯云水利水电工程造价系统 (五) 补充定额
  9. Ubuntu 22.04下载安装VMware Workstation Pro 17
  10. python|解决Cannot open D:\python\Anaconda\envs\tensorflow\Scripts\pip-script.py(重装pip)