Java中String类型能够存放多大的数据量?
https://blog.csdn.net/weixin_52707625/article/details/125583678
最近在编写博客系统时,在文章上传遇到了个问题:
- 到底使用什么来接收文章呢?String类型能接收多大的数据量?
随后,我去网上找了一下,发现都是说String只能存放65535个字符
- 啊这?真的是这样吗?我又亲自去编译器试了一遍,还真的是,这可咋整?
- 为此,我去百度了一遍,也没找到啥好的方案,随后,我就想着只能使用流传输了。
- 但是,流传输我也不会呀!!咋办?我就抱着尝试的心态,试了一下使用String来接收
- 你猜咋地,居然成功接收了!!!为什么,居然成功了!!!
- 我上传了七万多个文字,居然能够接收并保存到数据库。啊这?
经过不断的搜索,终于知道原因了
为什么会报错:这是因为jvm编译时允许的String类型最大长度为65535,当超出长度时就会编译失败。
为什么能接收成功?
- 首先,我们要知道String是怎么存储字符串的,String类型其实就是一个char类型的数组,就是使用数组来存放字符。
- 既然是数组,那么它也是有长度限制的,通过String的源码可以知道,String类型的长度就是一个int类型。
- 通过int类型的封装类Integer可以看出,int类型的取值范围为 -231 ~ 231 -1
- 所以理论上是可以存放231 -1个字符,也就是差不多231 - 1 = 2147483647 = 2G,真多。
- 理论上是,但是编译时是通过JVM进行编译的,JVM是存在编译规范的,它对String类型做出了限制,所以,当String类型编译时,不能超过216 个字符。
- 但是,JVM编译规范,跟我运行有什么关系呢?
- 所以,运行时是不受编译规范影响的,运行时拼接或者赋值是根据String的定义范围来做的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)