A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯晓骏 中级黑马   /  2013-10-26 10:58  /  883 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天突然发现不管是GBK还是U8码表,字符串中的字符获取字节数组时都是1个字节表示的,但是如果获取char数组又可以是两个字节,有点糊涂,这里面是怎么encode和decode的,同样一个字符串,为什么获取字节数组就是1个字节表示一个字符,获取字符数组就是两个字节,是在查表反编译之后补了8个0转成了字符么?

  1.                 System.out.println(Byte.SIZE);
  2.                 System.out.println(Short.SIZE);
  3.                 System.out.println(Integer.SIZE);
  4.                 System.out.println(Long.SIZE);
  5.                 System.out.println(Float.SIZE);
  6.                 System.out.println(Double.SIZE);
  7.                 System.out.println(Character.SIZE);

  8.                 System.out.println("FF".getBytes("GBK").length);
  9.                 System.out.println("李四".getBytes("GBK").length);
  10.                 char[] arr = new char[2];
  11.                 "ff".getChars(0,2,arr,0);
  12.                 for(int i = 0 ; i < 2 ; i ++)
  13.                 {
  14.                         System.out.println(arr[i]);
  15.                 }
  16.                                
  17.                 byte[] buf = "ff".getBytes();
  18.                 for(int i = 0 ; i < buf.length ; i ++)
  19.                 {
  20.                         System.out.println(buf[i]);
  21.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

2 个回复

倒序浏览
哥么你理解错了
java中一个字符占用两个字节,一个字符既可以存储一个字母,也可以存储一个汉字

为什么获取字节数组就是1个字节表示一个字符,获取字符数组就是两个字节,是在查表反编译之后补了8个0转成了字符么?
你获取字节数组时它是以1个字节为单位获取的,而你采用字符数组它则采用两个字节为单位获取的,这本来就没有问题啊,好好想想

好好学习哦,不懂可以问我

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
To 金牌黑马 2013-10-27 16:09:03
藤椅
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马