首页 > 编程知识 正文

java字符串包含另一个字符串(c语言最长字符串)

时间:2023-05-04 23:30:46 阅读:96319 作者:2498

String可以说是Java中使用频率最高的类,即使是刚接触Java的初学者也不会陌生,因为对于Java程序来说,main方法使用String类型的数组作为参数(String[] args)。

对于如此频繁使用的类,String字符串可以有多长?十万字?一百万个字符?还是无限的?

要了解String的最大长度,我们应该首先了解String类的内部实现。在字符串类中,字符数组用于维护字符序列,其声明如下:

私有最终字符值[];也就是说,字符串的最大长度取决于字符数组的最大长度。我们知道,在指定数组长度时,可以使用byte、short、char、int类型来代替long类型。也就是说,数组的最大长度是int类型的最大值,即0x7fffffff,十进制是2147483647。同样,这是String可以容纳的最大字符数。

此外,让我们看看java.lang.String#length()源代码:

public int length() {返回值. length}可以看出,获取String对象长度的length方法的返回值是int类型,而不是long类型,这也是原因。

然而,这个最大值仅在理论上可以实现。在我们的实际使用中,得到的最大长度一般小于理论值。让我们编写最简单的程序来看看。

/* * * @作者wupx * @日期2020/01/13 */public class StringTest { public static void main(String[]args){ char[]c=new char[Integer。MAX _ VALUE];}}}运行此程序,在正常情况下,会产生以下错误:

异常线程“main”Java . lang .内存不足错误:在test . stringtest . main(stringtest . Java :9)请求的数组大小超过了VM限制。出现此错误的原因是内存溢出,即系统无法分配如此大的内存空间。经计算,一个字符类型占用2字节,2147483647个字符类型为4294967294字节,接近4GB。如果你想申请这么大的连续内存空间,你会失败,这并不奇怪。

那么,我们的电脑能承受多大的字符数组,这就和软硬件等诸多因素有关了。我们可以编写程序来获得可以申请的最大字符数组的近似值。

/* * * @作者wupx * @日期2020/01/13 */public class StringTest { public static void main(String[]args){ for(int I=0;i 100i ) { int len=整数。MAX _ VALUE-I;尝试{ char[]ch=new char[len];system . out . println(' len : ' len ' OK ');} catch(错误e){ system . out . println(' len : ' len ' ' e);}}}}}}运行结果如下:

Len : 2147483647 Java . lang . out of memory error :请求的数组大小超过VM限制Len : 2147483646 Java . lang . out of memory error :请求的大小超过VM限制Len : 2147483645 OK Len 3360 2147483644 OK Len 3360 2147483643 OK根据运行结果,MAX_VALUE-2或2 31-3。

总结

在String类中,字符数组(char[])用于维护字符序列。

字符串的最大长度是字符数组的最大长度。理论上最大长度是int类型的最大值,即2147483647。

实际上,最大可用值一般小于理论最大值,在我的电脑上得到的最大值是2.31-3。你可以在自己的电脑上测试。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。