Java中String类型能够存放多大的数据量?

最近在编写博客系统时,在文章上传遇到了个问题:

  • 到底使用什么来接收文章呢?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的定义范围来做的。

个人理解,如有不到位或错误的地方,欢迎纠正😁

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值