string的字符长度最大是多少-亚博电竞手机版

string的字符长度最大是多少

这篇文章主要讲解了“string的字符长度最大是多少”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“string的字符长度最大是多少”吧!

string 类可以说是在 java 中使用最频繁的类了,就算是刚刚接触 java 的初学者也不会陌生,因为对于 java 程序来说,main 方法就是使用一个 string 类型数组来作为参数的(string[] args)。对于这样一个频繁使用的类,string 字符串可以有多长呢?十万字符?一百万字符?还是无限的呢?

要弄清楚 string 的最大长度,首先应该了解 string 类的内部实现。在 string 类中,是使用一个字符数组来维护字符序列的,其声明如下:

privatefinalcharvalue[];

这也就是说,string 的最大长度取决于字符数组的最大长度,我们知道,在指定数组长度的时候,可以使用 byte、short、char、int 类型,而不能够使用 long 类型。这也就是说,数组的最大长度就是 int 类型的最大值,即 0x7fffffff,十进制就是 2147483647,同理,这也就是 string 所能容纳的最大字符数量。

而且,我们来看下 java.lang.string#length() 源码:

publicintlength(){returnvalue.length;}

可以看出获得 string 对象长度的 length 方法返回值是 int 类型的,而不是 long 类型的,也是因为这个原因。

不过,这个最大值只是在理论上能够达到的值,在我们实际的使用中,一般情况下获得的最大长度比理论值要小。下面我们写一个最简单的程序来看。

/***@authorwupx*@date2020/01/13*/publicclassstringtest{publicstaticvoidmain(string[]args){char[]c=newchar[integer.max_value];}}

运行这个程序,在通常情况下,都会产生如下的错误:

exceptioninthread"main"java.lang.outofmemoryerror:requestedarraysizeexceedsvmlimitattest.stringtest.main(stringtest.java:9)

产生这个错误的原因就是内存溢出,也就是系统无法分配这么大的内存空间所致。计算一下,一个 char 类型占用 2 字节,2147483647 个 char 类型就是 4294967294 字节,这接近于 4gb 大小,想要申请这么一大块连续的内存空间,失败也就不足为奇了。

那么,到底我们所用的计算机能够承受多大的字符数组呢,这跟软件与硬件等诸多因素都有关,我们可以编写程序来获得可申请最大字符数组的近似值。

/***@authorwupx*@date2020/01/13*/publicclassstringtest{publicstaticvoidmain(string[]args){for(inti=0;i<100;i ){intlen=integer.max_value-i;try{char[]ch=newchar[len];system.out.println("len:" len "ok");}catch(errore){system.out.println("len:" len "" e);}}}}

运行结果如下:

len:2147483647java.lang.outofmemoryerror:requestedarraysizeexceedsvmlimitlen:2147483646java.lang.outofmemoryerror:requestedarraysizeexceedsvmlimitlen:2147483645oklen:2147483644oklen:2147483643ok

根据运行结果可以看出 string 的最大长度为 integer.max_value - 2 或 2 ^ 31 - 3。

感谢各位的阅读,以上就是“string的字符长度最大是多少”的内容了,经过本文的学习后,相信大家对string的字符长度最大是多少这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图