Java中String最大可储存多少个字符

编译时:字符串的UTF8编码值的字节数不能超过65535,最多只能存放65535个字节长度的字符串2^16-1约等于64KB。当字符串是一个字符占用多个字节时,如全中文时,如果是utf-8编码,一个中文占3个字节,那和可存65533/3=21845个中文字符串。javac编译器编译时,字符串最大长度为65534Byte,但使用eclipse编译器编译时,则没有字符串的长度限制。

运行时:字符串的长度不能超过2^32-2字节约等于4GB

为什么?

编译时限制是因为JVM是存在编译规范,JVM编译时允许的String类型最大长度为65535既是2^16个字节,当超出长度时就会编译失败

运行时限制是因为String其实就是一个char类型的数组,用数组来存放字符,数组的长度length类型是int,而int类型范围为-2^31~2^31-1,length不能为负数,所以数组最大是2^31-1,因为String值是char数组,char占两个字节,所以运行时String最大限制是(2^31-1)*2约等于4GB


 

 补充字节字符概念:

 英文和数字占一个字节 中文占一个字符,也就是两个字节,utf8编码占三个字节,字符 不等于 字节。
字符(char)是 Java 中的一种基本数据类型,由 2 个字节组成,范围从 0 开始,到 2^16-1。 字节是一种数据量的单位,一个字节等于 8 位。所有的数据所占空间都可以用字节数来衡量。例如一个字符占 2 个字节,一个 int 占 4 个字节,一个 double 占 8 个字节 等等。

1Byte=8bit

1k=2^10;b:位;B:字节1kb=1024 位1kB=1024 字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值