Java中char[] 和 String 类型占用字节大小问题
作者:威威喵原文链接:https://blog.csdn.net/smile_Running/article/details/87211916
在C语言中
1、chara[10]={"China"}中,这个a占用多少字节?
答:占用10个字节。
解析:上面代码对a做了赋值的操作,
a[0]='C',a[1]='h',a[2]='i',a[3]='n',a[4]='a',a[5]='\0',a[6]='\0',a[7]='\0',a[8]='\0',a[9]='\0'
所以,它占用的是10个字节。
2、如果单指”China“?
答:共6个字节。China占5个字节,最后以'\0'结束,占1个字节。
在Java语言中
1、Strings="China";占多少字节?
答:占5个字节。
System.out.println(Charset.defaultCharset());//获取ide默认编码类型 Strings=newString("China".getBytes()); byte[]b=s.getBytes(); System.out.println(""+b.length);
以上代码,可以输出 "China"所占的字节长度为5
2、Strings="中国";占多少字节?
答:如果是汉字的情况需要考虑编码。
(1)GBK编码(ide默认)时,每一个汉字占用2个字节,那么中国占4个字节。
(2)UTF-8编码时,每一个汉字占用3个字节,那么中国占用6个字节。
3、转码问题,GBK转UTF-8时,字节占用会变大吗?反过来呢?
//获取的是UTF-8编码 System.out.println(Charset.defaultCharset()); Strings; try{ s=newString("中国".getBytes(),"GBK"); byte[]b=s.getBytes(); System.out.println(""+b.length); }catch(UnsupportedEncodingExceptione){ e.printStackTrace(); }
如上代码是:UTF-8转GBK编码格式,s长度从6字节变为9字节。
s内容变化:中国—>涓鍥
因为当前编码是UTF-8,转码之后变成了3个文字,占用9个字节。然而,反过来的情况是这样的:
中国(gbk)—>?й?(utf-8)
s长度从4字节变成了4字节,虽然长度没发生改变,但是文字已经改变。这里的?占用1个字节。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。