java中String对象的长度

java中String的长度


使用 Integer.MAX_VALUE

Integer.MAX_VALUE = 2147483647 :   String   和   StringBuffer


 获得长度的方法:    

  public   int   length()   
  Returns   the   length   of   this   string.   The   length   is   equal   to   the   number   of   16-bit   Unicode   characters    in   the   string.   
    

  获得   String   和   StringBuffer   的长度的方法都是   int   length()   


 下面就可以计算出他们的最大长度

 int   是一个   32   位变量类型,取正数部分来算的话,他们最长可以有

 2^31-1   =   2147483647   个   16-bit   Unicode   character     

    


 共   2147483647   *   16   =   34359738352   位   
 34359738352   /   8   =   4294967294   (Byte)   
 4294967294   /   1024   =   4194303.998046875   (KB)   
 4194303.998046875   /   1024   =   4095.9999980926513671875   (MB)   
 4095.9999980926513671875   /   1024   =   3.99999999813735485076904296875   (GB)   
 有近   4G   的容量。



 附:

 在编写时,如果使用Sting str = "aaaa";的形式定义一个字符串,那么双引号里面的ASCII 字符最多只能有 65534 个。

 为什么呢?因为在class文件的规范中, CONSTANT_Utf8_info 表中使用一个16 位的无符号整数来记录字
 符串的长度的,最多能表示 65536 个字节,而 java class 文件是使用一种变体UTF-8格式来存放字符的,null 值使用两个  字节来表示,因此只剩下 65536- 2 = 65534个字节。


 也正是变体UTF-8 的原因,如果字符串中含有中文等非ASCII 字符,那么双引号中字符的数量会更少(一个中文字符占用  三个字节)。如果超出这个数量,在编译的时候编译器会报错。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。