A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 搁浅丶那份 中级黑马   /  2015-7-8 22:21  /  1377 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚刚看到String类,在定义String变量时,变量的长度是否可以是无限的,问了一下度娘,说最长长度不能超过64k,不是很懂,有大神懂的给讲讲。。。。。小白先谢谢了。。。

20 个回复

倒序浏览
没研究过这个问题,觉得毫无意义啊。。。。。。。。
回复 使用道具 举报
成佳裕 发表于 2015-7-8 23:45
没研究过这个问题,觉得毫无意义啊。。。。。。。。

你怎么觉得毫无意义呢?? 人家好歹也思考过了啊。。。
回复 使用道具 举报
micro_hx 发表于 2015-7-8 23:53
你怎么觉得毫无意义呢?? 人家好歹也思考过了啊。。。

是的,思考是好的。。。
回复 使用道具 举报
肯定会有个长度的啊
回复 使用道具 举报
还没学到这个知识点
回复 使用道具 举报
这个问题....
先在eclipse里查原码,得到String的构造方法this.value = new char[0];
就是说,是一个字符数组.
那么字符数组的最大长度为多少,定义的时候,char[]的中括号中是要写一个整型的
整型的最大值2147483647
于是试了下,发现出现了异常
然后再试试楼主的64k,1k=1024byte,64k=65536....试了下,完全没有问题
最后,char[] chars = new char[89304798];这个是我电脑的极限,但我怀疑不准确,所以我关闭eclipse重新试了下
然而,数字并没有变化.....然后我开始测试这个数组能否转化成字符串..
于是,又报错了,虽然数组没事,但是却不能转化为字符串...
最后,        char[] chars = new char[44652490];减了一半的体积,才能成功转化为字符串....
不过,总比65535要大很多的了..
回复 使用道具 举报
我也想知道String的长度限制。
回复 使用道具 举报
我觉得跟跟byte是-127~127是一样的吧   分配空间的时候 应该会有一个额度
回复 使用道具 举报
楼主很好学。。。
回复 使用道具 举报
这个你可以去查String的源码,把该类的构造方法看一遍,你就知道了,有很多
回复 使用道具 举报
赞一个,分享
回复 使用道具 举报
貌似应该不止64k才对
回复 使用道具 举报
应该不止64k吧
回复 使用道具 举报
赞一个!
回复 使用道具 举报
什么64K?,String的计数是count来计的,count是int类型你说是多少?2的32次方4个G
回复 使用道具 举报
你要知道他的长度干嘛
回复 使用道具 举报
你想啊,内存就那么大,不可能有什么东西是无限的对吧,所以说操作系统底层对这些东西肯定有限制的,只不过基本用不到那么多,所以我们一般不考虑而已,这一个字符串写到64K的话我也是醉了
回复 使用道具 举报
  不懂,在看大神们解说
回复 使用道具 举报
本帖最后由 新手ing 于 2015-7-9 20:49 编辑

看看源码,有没有思路
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马