java 字符和字节的关系
2024-07-30 19:58:09 218人阅读
问题:
Java中中英文分别占几个字节?如果数据量很大,或者存储空间不足的时候,可能需要考虑字节的占用大小,用于估计使用机器的数量。
方案:
很简单的:
1个字符=2个字节
1个字节=8位
1个英文字符占一个字节,也就是0.5个字符
1个中文字符占2-4个字节,这个需要区分编码情况,具体如下:
UTF8编码下: 1个中文字符占3个字节(少数占4个字节)
GBK编码下: 1个中文字符占2个字节
UTF16编码下:1个中文字符占2个字节,Unicode扩展区的一些汉字存储需要4个字节
上面其实不好记,最好的方法是放到程序里面去实际运行一下看看。
例子:
07 | * @email dutycode@gmail.com |
08 | * @website http://www.dutycode.com |
12 | public class BytesDemo { |
14 | public static void main(String[] args) { |
15 | String e1 = "english" ; |
18 | byte [] eb1 = e1.getBytes(); |
19 | byte [] cb1 = c1.getBytes(); |
21 | byte [] ebUTF8 = e1.getBytes(Charset.forName( "utf8" )); |
22 | byte [] cbUTF8 = c1.getBytes(Charset.forName( "utf8" )); |
24 | byte [] ebGbk = e1.getBytes(Charset.forName( "gbk" )); |
25 | byte [] cbGbk = c1.getBytes(Charset.forName( "gbk" )); |
27 | System.out.println( "英文字符:" + eb1.length); |
28 | System.out.println( "中文字符,默认(UTF8):" + cb1.length); |
29 | System.out.println( "英文字符,(UTF8):" + ebUTF8.length); |
30 | System.out.println( "中文字符,(UTF8):" + cbUTF8.length); |
31 | System.out.println( "英文字符,(GBK):" + ebGbk.length); |
32 | System.out.println( "中文字符,(GBK):" + cbGbk.length); |
运行结果:
java 字符和字节的关系
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。