JAVA中的String长度
String 的长度:
我们可以使⽤串接操作符得到⼀个长度更长的字符串,那么,String 对象最多能容纳多少字符呢?
查看String的源代码我们可以得知类String中是使⽤域 count 来记录对象字符的数量,⽽count 的类型为 int,因此,我们可以推测最长的长度为 2^32,也就是4G。
不过,我们在编写源代码的时候,如果使⽤ Sting str = "aaaa";的形式定义⼀个字符串,那么双引号⾥⾯的ASCII 字符最多只能有 65534个。
为什么呢?
字符串长度的正确表示因为在class⽂件的规范中, CONSTANT_Utf8_info 表中使⽤⼀个16 位的⽆符号整数来记录字符串的长度的,最多能表⽰ 65536 个字节,⽽java class ⽂件是使⽤⼀种变体UTF-8格式来存放字符的,null 值使⽤两个字节来表⽰,因此只剩下 65536- 2 = 65534个字节。
也正是变体UTF-8 的原因,如果字符串中含有中⽂等⾮ASCII 字符,那么双引号中字符的数量会更少(⼀个中⽂字符占⽤三个字节)。
如果超出这个数量,在编译的时候编译器会报错。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。