黑马程序员技术交流社区

标题: String变量问题 [打印本页]

作者: 搁浅丶那份    时间: 2015-7-8 22:21
标题: String变量问题
刚刚看到String类,在定义String变量时,变量的长度是否可以是无限的,问了一下度娘,说最长长度不能超过64k,不是很懂,有大神懂的给讲讲。。。。。小白先谢谢了。。。

作者: 成佳裕    时间: 2015-7-8 23:45
没研究过这个问题,觉得毫无意义啊。。。。。。。。
作者: micro_hx    时间: 2015-7-8 23:53
成佳裕 发表于 2015-7-8 23:45
没研究过这个问题,觉得毫无意义啊。。。。。。。。

你怎么觉得毫无意义呢?? 人家好歹也思考过了啊。。。
作者: 成佳裕    时间: 2015-7-9 00:05
micro_hx 发表于 2015-7-8 23:53
你怎么觉得毫无意义呢?? 人家好歹也思考过了啊。。。

是的,思考是好的。。。
作者: pathnet    时间: 2015-7-9 00:11
肯定会有个长度的啊
作者: 是么了11    时间: 2015-7-9 00:43
还没学到这个知识点
作者: 梁思宇    时间: 2015-7-9 01:37
这个问题....
先在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要大很多的了..
作者: icichacici    时间: 2015-7-9 07:21
我也想知道String的长度限制。
作者: wunairensheng95    时间: 2015-7-9 08:19
我觉得跟跟byte是-127~127是一样的吧   分配空间的时候 应该会有一个额度
作者: fantianfei    时间: 2015-7-9 09:26
楼主很好学。。。
作者: wing-SF    时间: 2015-7-9 09:30
这个你可以去查String的源码,把该类的构造方法看一遍,你就知道了,有很多
作者: dajiaoya    时间: 2015-7-9 10:02
赞一个,分享
作者: 拾起落叶    时间: 2015-7-9 10:29
貌似应该不止64k才对
作者: 拾起落叶    时间: 2015-7-9 10:33
应该不止64k吧
作者: zhangxin    时间: 2015-7-9 13:34
赞一个!
作者: zhangfurui    时间: 2015-7-9 14:18
什么64K?,String的计数是count来计的,count是int类型你说是多少?2的32次方4个G
作者: 心在左边跳    时间: 2015-7-9 14:23
你要知道他的长度干嘛
作者: Nemo    时间: 2015-7-9 18:34
你想啊,内存就那么大,不可能有什么东西是无限的对吧,所以说操作系统底层对这些东西肯定有限制的,只不过基本用不到那么多,所以我们一般不考虑而已,这一个字符串写到64K的话我也是醉了
作者: 进军黑马    时间: 2015-7-9 19:44
  不懂,在看大神们解说
作者: 新手ing    时间: 2015-7-9 20:38
本帖最后由 新手ing 于 2015-7-9 20:49 编辑

看看源码,有没有思路

作者: 搁浅丶那份    时间: 2015-7-9 21:17
梁思宇 发表于 2015-7-9 01:37
这个问题....
先在eclipse里查原码,得到String的构造方法this.value = new char[0];
就是说,是一个字符数组 ...

我说的是定义变量的长度啊。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2