码迷,mamicode.com
首页 > 编程语言 > 详细

java 字符和字节的关系

时间:2014-11-02 22:36:00      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   color   ar   os   使用   java   for   

问题:

    Java中中英文分别占几个字节?如果数据量很大,或者存储空间不足的时候,可能需要考虑字节的占用大小,用于估计使用机器的数量。

方案:

    很简单的:

        1个字符=2个字节

        1个字节=8位

    1个英文字符占一个字节,也就是0.5个字符

    1个中文字符占2-4个字节,这个需要区分编码情况,具体如下:

        UTF8编码下: 1个中文字符占3个字节(少数占4个字节)

        GBK编码下:  1个中文字符占2个字节

        UTF16编码下:1个中文字符占2个字节,Unicode扩展区的一些汉字存储需要4个字节


上面其实不好记,最好的方法是放到程序里面去实际运行一下看看。

例子:

    

01 /**
02  *
03  * 描述:Java字符和字节测试例子
04  * 类名:BytesDemo.java
05  * @author dutycode
06  * @weibo ideaduty
07  * @email dutycode@gmail.com
08  * @website http://www.dutycode.com
09  * 2014-11-2
10  * @version 1.0.1
11  */
12 public class BytesDemo {
13  
14     public static void main(String[] args) {
15         String e1 = "english";
16         String c1 = "中文";
17          
18         byte[] eb1 = e1.getBytes();
19         byte[] cb1 = c1.getBytes();
20          
21         byte[] ebUTF8 = e1.getBytes(Charset.forName("utf8"));
22         byte[] cbUTF8 = c1.getBytes(Charset.forName("utf8"));
23          
24         byte[] ebGbk = e1.getBytes(Charset.forName("gbk"));
25         byte[] cbGbk = c1.getBytes(Charset.forName("gbk"));
26          
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);
33     }
34 }
运行结果:


    bubuko.com,布布扣

    

java 字符和字节的关系

标签:style   http   io   color   ar   os   使用   java   for   

原文地址:http://blog.csdn.net/losetowin/article/details/40717009

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!