Java中String接受的最大字符串的长度是多少?

jtchan 2011-07-18 10:20:42
Java中String接受的最大字符串的长度是多少?
...全文
20135 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2011-07-18
  • 打赏
  • 举报
回复
上面的例子可能不是最好,反正动态获取是指在编译期,根本不知道是什么。比如从文件读取的字符串,甚至是你在控制台用键盘输入的字符串
shine333 2011-07-18
  • 打赏
  • 举报
回复
这个是指通过String s="aa....a";在编译期指定的形式,最多65536长度。
而String s=readFromSth();动态获取不在此限
walkman_22 2011-07-18
  • 打赏
  • 举报
回复
学习了。
不过我接触的字符串一般都不会超过50,其实字符串太长了很不好操作~~
jtchan 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]

String里面是一个char[],数组最大的长度为Integer.MAX_VALUE
[/Quote]

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字符,那么双引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错。


这里的“在class文件的规范中, CONSTANT_Utf8_info表中使用一个16位的无符号整数来记录字符串的长度的,最多能表示 65536个字节”如何解释?
iis81365341 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]
String里面是一个char[],数组最大的长度为Integer.MAX_VALUE
[/Quote]
也可以这样理解int length();的返回类型是int类型,int的最大值就是你的答案。
shine333 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]

String里面是一个char[],数组最大的长度为Integer.MAX_VALUE
[/Quote]
不考虑内存限制的话
龙四 2011-07-18
  • 打赏
  • 举报
回复
String里面是一个char[],数组最大的长度为Integer.MAX_VALUE
rg_qhp 2011-07-18
  • 打赏
  • 举报
回复
String 对象总是固定的字符串,不涉及容量的问题,它总是刚好足以容纳字符串中的字数。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧