免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: Ilovemugua
打印 上一主题 下一主题

string 有无字节数限制请教 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-04-21 21:42 |只看该作者
原帖由 tong0245 于 2006-4-21 17:03 发表
如果是java String的问题 应该在赋值的时候就抛出了  


表示强烈认同

论坛徽章:
0
12 [报告]
发表于 2006-04-21 21:46 |只看该作者
我和他在短信里边说了就是sql太长了 还不不信
java String愿意的可以填满内存

论坛徽章:
0
13 [报告]
发表于 2006-04-21 22:35 |只看该作者
一个String,最多能装的 2147483647 个字节

假如char的高位也利用的话,能有 34359738352 个字节 ,但是不能直接用 getBytes("编码方式")

得到 34359738352 个字节 ,需要先得到每一个个的char,再分高低位。。。

想挑战极限吗?

论坛徽章:
0
14 [报告]
发表于 2006-04-21 22:57 |只看该作者
原帖由 wobushiwo 于 2006-4-21 22:35 发表
一个String,最多能装的 2147483647 个字节

假如char的高位也利用的话,能有 34359738352 个字节 ,但是不能直接用 getBytes("编码方式")

得到 34359738352 个字节 ,需要先得到每一个个的char, ...

但是java String 长度受限于jvm内存  还有他的size 他用int做为计数器变量的类型
但是我说的不太对 string还是有长度限制的 因为计算size用的是int  受限于这个了
当int溢出就完蛋了
说话要注意啊 我刚刚看过源码 事情没有你说的那么复杂 好多数据库的clob是你说的那样的

论坛徽章:
0
15 [报告]
发表于 2006-04-21 23:03 |只看该作者
jvm有没限制不清楚,不过就按源码来看

char[int]

1 数组极限肯定不会超过 2147483647
2 假如存满了2147483647个char,char 是 16 位,假如是按支持双字节的 编码 来 getBytes 的话(比如 getBytes("GBK")),那得到的 bytes[] 肯定是超了的

论坛徽章:
0
16 [报告]
发表于 2006-04-24 14:58 |只看该作者
String.length() 返回的是一个int。不知道这个信息对你有没有帮助。

论坛徽章:
0
17 [报告]
发表于 2006-04-24 15:26 |只看该作者
长知识。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP