Java语言中,字符串“Java程序员”在内存中所占用的字节数是:(D)
A.10
B.7
C.13
D.14
分析
说白了归根到底就是编码问题,java实际是采用的unicode编码,准确的说是采用utf-16编码的(utf-16可以说是unicode编码的一种实现形式),这在java的说明手册中是可以清晰看到的。
UTF-16
任何字符对应的数字都用两个字节来保存,所以说在这道题中没有指定编码格式,那么采用默认的编码格式(即utf-16),每个字符都占用2个字节。
UTF-8
utf-8采用变长字节的形式来实现unicode编码:
在utf-8中===============>
占2个字节的:带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码
占3个字节的:基本等同于GBK,含21000多个汉字
占4个字节的:中日韩超大字符集里面的汉字,有5万多个
一个utf8数字占1个字节
一个utf8英文字母占1个字节
如果指定了utf-8格式,因为中文汉字3或4个字节不等,多数为3个字节,这里自己可以测试一下,结果是每个字母占用1个字节,每个汉字各占3个字节,总共13个字节。
最后
可以看看下面两篇文章,深入理解一下Unicode、UTF-8、UTF-16之间的区别,还有utf-8编码的占用字节。
Unicode、UTF-8、UTF-16之间的区别
utf-8编码的占用字节