java string能存储多长_Java中String接受的最大字符串的长度是多少

Java中的String对象长度并非无限,其最大长度受制于int类型的范围,理论上可达2^32。然而,由于Class文件的CONSTANT_Utf8_info表限制,双引号内的ASCII字符最多只能有65534个。考虑到UTF-8编码,实际存储非ASCII字符时,字符串长度会进一步减少。编译时超出这个限制将导致错误。
摘要由CSDN通过智能技术生成

最近在使用String的时候遇到用string接字符串,结果出现String 接不住,数据过多,超出长度了.原来String是有容量限制的 我们可以使用串接操作符得到一个长度更长的字符串,那么,String对象最多能容纳多少字符呢?查看String的源代码我们可以得知类String中

是使用域 count 来记录对象字符的数量,而count 的类型为 int,因此,我们可以推测最长的长度为 2^32,也就是4G。

不过,我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字符串,那么双引号里面的ASCII字符最多只能 有 65534 个。为什么呢?因为在class文件的规范中, CONSTANT_Utf8_info表中使用一个16位的无符号整数来记录字符串的长 度的,最多能表示 65536个字节,而java class 文件是使用一种变体UTF-8格式来存放字符的,null值使用两个字节来表示,因此只剩 下 65536- 2 = 65534个字节。也正是变体UTF-8的原因,如果字符串中含有中文等非ASCII字符,那么双引号中字符的数量会更少(一 个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错 ———————————————— 版权声明:本文为CSDN博主「一往无前-千夜」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wolfking0608/article/details/78583944

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值