size() 与 length()
这两个方法从含义到用法都是完全一样的,但是看了官网的解释后才发现,其实和自己的理解又不完全一致:
String objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).
大致含义是,字符串对象处理字节时不管将来这些字符的编码格式会是什么。返回的值可能与多字节或可变长度字符(例如 UTF-8)序列中的实际编码字符数不对应。
不同编码格式示例:
字符 | ASCII | Unicode | UTF-8 |
---|---|---|---|
A | 01000001 | 00000000 01000001 | 01000001 |
中 | - | 01001110 00101101 | 11100100 10111000 10101101 |
这也解释了为什么在代码里求一个字符串的 size 得到的数字是 A,放到 word 中去求字符数却是 B。明明看起来只有普通字符,其实编码并不是一个字符只占一个字节的 ASCII 码。
网友评论