900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > getBytes(charsetname)与String(bytes charsetname)

getBytes(charsetname)与String(bytes charsetname)

时间:2021-10-12 08:12:24

相关推荐

getBytes(charsetname)与String(bytes charsetname)

其实这篇博文是由上一篇博文引起的,因为上一篇提到了getBytes(charsetname)与String(bytes,charsetname)这两个方法,一直对编码解码不是很清楚,这次花费心思下决心搞明白它,在网上各处查资料,现在把我的理解说出来,仅供大家参考

首先要说,java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节

我们还知道,现在普遍使用的unicode版本是UCS-2,就是使用2个字节表示一个字符的unicode版本,这就对上了,java使用的就是UCS-2标准,所以,String中的value中存储的都是一个个数字

比如’你’的unicode编码是4f60,看下面的测试代码

char c = 你;System.out.println(Integer.toHexString(c));System.out.println(Integer.valueOf(c));System.out.println(c);

结果是:

4f60

20320

所以呢,现在我们知道了String内部其实存储的是未经任何编码的unicode编码,就是那个对应字符的编码,然后再看我们这两个方法:

getBytes(charsetname)

意思是根据这个编码来获取字节数组

这又是什么意思呢?

就是说将内存中的unicode编码转换为charsetname

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。