首页 > 编程语言 >Java中String类型能够存放多大的数据量?编译器只支持String只能存放65535个字符,运行时可用是int长度远比65535个多

Java中String类型能够存放多大的数据量?编译器只支持String只能存放65535个字符,运行时可用是int长度远比65535个多

时间:2023-06-14 19:12:05浏览次数:57  
标签:String int 编译 存放 类型 65535

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的定义范围来做的。

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

标签:String,int,编译,存放,类型,65535
From: https://www.cnblogs.com/sunny3158/p/17481136.html

相关文章

  • 【最常用】两种java中的占位符的使用 第一种:使用%s占位,使用String.format转换 第二种:
    【最常用】两种java中的占位符的使用第一种:使用%s占位,使用String.format转换第二种:使用{1}占位,使用MessageFormat.format转换https://blog.csdn.net/weixin_43899069/article/details/121164107先介绍一下format是什么:Java中允许我们对指定的对象进行某种格式化,从而得到......
  • js把string转化为json
    //声明变量名为a的对象vara={a:1,b:2,c:"wangwei"};//将JSON对象转化为JSON字符,赋值给变量letstrResult=JSON.stringify(a)//查看变量strResult是什么类型typeofstrResult//'string'//JSON.parse()用于从一个字符串中解析出json对象letjsonResult=JSON.parse(str......
  • StringUtils.join()方法使用
    *StringUtils.join()方法使用打印输出:*使用StringBuilder进行拼接:张三,李四,王五*使用StringUtils.join进行拼接:张三,李四,王五*张三,李四,王五*张三&李四&王五*张三和李四和王五*手机耳机电脑packagecom.example.core.mydemo.string;importorg.apach......
  • 制造储存放射性元素容器的设想
    制造储存放射性元素容器的设想制造储存放射性元素容器的设想自然界中的抗放射性背景压力的高低是与宇宙运动(膨胀或收缩)的不同时期、不同区域密切相关的.宇宙爆炸的初期,抗裂变背景压力极高,只有极大的核才具有放射性.随着宇宙的进一步膨胀,宇宙中的物质的平均密度与......
  • ios NSString format 保留小数点 float double
     iosNSStringformat保留小数点floatdouble self.orderCost.text=[NSStringstringWithFormat:@"%.1f元",self.order.cost.floatValue];%.1f 表示小数点一位,%.2f表示小数点2位,依次类推.格式定义TheformatspecifierssupportedbytheNSStringformattingmethodsa......
  • golang对于[]byte数组转string进行比较的优化
    当需要比较两个[]byte数组是否相等时有好几种方案,下面可以看出前三种方案都是优化过的,效率高的方案。packagemainimport( "bytes" "crypto/rand" mr"math/rand" "testing")funcStringEqual(nint,ffunc(a,b[]byte)bool){ buf:=make([]byte,1024) rand.......
  • TStringList的用法
    TStringList的用法TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。常规的用法大家都知道,现在来讨论它的一些高级的用法。先把要讨论的几个属性列出来:1、CommaText2、Delimiter&DelimitedText3、Names&Values&ValueFromIndex先看第一个:CommaText。怎......
  • beego:interface conversion: interface {} is string, not int
    代码organizationId:=info[0]["organization_id"].(int)报错beego_api:interfaceconversion:interface{}isstring,notintRequestMethod: GETRequestURL: /v1/board2/students/detail2?id=237497RemoteAddr: ::1Stack/usr/local/go/src/runtime/panic.go......
  • C# 将 List<dynamic> 转换为 List<string>
    vardlist=newList<dynamic>(){"Guangzhou","Zhuhai","Shenzhen"};提取集合中的所有字符串,忽略所有其他类型,可以使用://Solution1:Includeonlystrings,nonullvalues,noexceptionsthrownvarstrings=dlist.OfType<stri......
  • Balanced Ternary String
    给出一个长为n的只由'1','2','0'组成的字符串,要求改动最少的位置,使'1','2','0'的个数相同(保证n能被3整除),并使改动后的字符串字典序最小。n不大于3∗105贪心思路,从左向右大的变小的,从右向左小的变大的:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;str......