求string长度java_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 字符,那么双引号中字符的数量会更少(一个中文字符占用  三个字节)。如果超出这个数量,在编译的时候编译器会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值