首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >String.length()和String.getBytes().length的区别

String.length()和String.getBytes().length的区别
EN

Stack Overflow用户
提问于 2013-04-29 12:00:19
回答 4查看 62.9K关注 0票数 38

我是一个自学Java编程的初学者。所以,我想知道String.length()String.getBytes().length在Java中的区别。

哪种方法更适合检查字符串的长度?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-29 12:08:30

String.length()

String.length()是表示字符串所需的16位UTF-16代码单元的数量。也就是说,它是用于表示字符串的char值的数量,因此也等于toCharArray().length。对于西方语言中使用的大多数字符,这通常与字符串中的unicode字符(代码点)的数量相同,但如果使用任何UTF-16 surrogate pairs,则代码点的数量将少于代码单元的数量。这样的对只在对BMP之外的字符进行编码时才需要,并且在大多数书写中都是表情( rarely used是常见的exception)。

String.getBytes().length

另一方面,String.getBytes().length是以平台的默认编码表示字符串所需的字节数。例如,如果默认编码是UTF-16 (rare),那么它将恰好是String.length()返回值的2倍(因为每个16位代码单元需要2个字节来表示)。更常见的是,您的平台编码将是像UTF-8这样的多字节编码。

这意味着这两个长度之间的关系更加复杂。对于ASCII字符串,这两个调用几乎总是产生相同的结果(除了不以1字节编码ASCII子集的不寻常的默认编码之外)。在ASCII字符串之外,String.getBytes().length可能更长,因为它计算表示字符串所需的字节,而length()计算2字节的代码单元。

哪一个更合适?

通常,您会将String.length()与其他接受字符串偏移量的字符串方法结合使用。例如,要获取最后一个字符,您可以使用str.charAt(str.length()-1)。只有在处理getBytes返回的字节数组编码时,才会使用getBytes().length

票数 48
EN

Stack Overflow用户

发布于 2013-04-29 12:05:04

length()方法以字符为单位返回字符串的长度。

字符可能会占用超过一个字节。表达式String.getBytes().length使用平台的缺省字符集返回以字节为单位的字符串长度。

票数 9
EN

Stack Overflow用户

发布于 2013-04-29 12:08:18

String.length()方法返回字符串中的符号数量。而String.getBytes().length()返回用于存储这些符号的字节数。通常,字符以UTF-16编码存储。因此,存储一个字符需要2个字节。查看此SO answer

我希望它能有所帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16270994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档