我是Java编程的初学者和自学者.所以,我想知道Java 之间String.length()和之间的区别String.getBytes().length.
什么更适合检查字符串的长度?
Bee*_*ope 39
String.length()是表示字符串所需的16位UTF-16代码单元的数量.也就是说,它是char用于表示字符串的值的数量,因此也等于toCharArray().length.对于西方语言中使用的大多数字符,这通常与字符串中的unicode字符(代码点)的数量相同,但如果使用任何UTF-16 代理对,则它将小于数字代码单元.这种对时,才需要进行编码的以外的字符BMP并很少使用在大多数书写(表情符号是一种常见的例外).
String.getBytes().length另一方面,是在平台的默认编码中表示字符串所需的字节数.例如,如果默认编码是UTF-16(罕见),则它将是返回值的2 String.length()倍(因为每个16位代码单元需要2个字节来表示).更常见的是,您的平台编码将是一个多字节编码,如UTF-8.
这意味着这两个长度之间的关系更复杂.对于ASCII字符串,这两个调用几乎总是会产生相同的结果(在1个字节内不编码ASCII子集的异常默认编码之外).ASCII字符串之外,String.getBytes().length很可能是更长的时间,因为它计算表示该字符串所需的字节,而length()数2字节代码单位.
通常,您将String.length()与其他字符串方法一起使用,这些方法将偏移量转换为字符串.例如,要获得最后一个角色,你可以使用str.charAt(str.length()-1).getBytes().length由于某种原因,您只使用if来处理返回的字节数组编码getBytes.
该length()方法以字符形式返回字符串的长度.
字符可能需要多个字节.表达式String.getBytes().getLength()使用平台的默认字符集返回字符串的长度(以字节为单位).