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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Cola 中级黑马   /  2013-11-26 20:42  /  3023 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Cola 于 2013-11-27 07:17 编辑

getBytes()输出的是什么呢?为什么输出的是49 50 51呢?
  1. String s2="123";
  2. byte[] by1=s2.getBytes();
  3. for(int x=0;x<by1.length;x++)
  4. {
  5.         sop(by1[x]);
  6. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
因为String存储的是字符串,里面的123是字符的123,是按照ascii码存储的,getBytes得到的是字节码,是ascii  0~9在ascii里面是0x30到0x39  换算到10进制就是48~57.所以1,2,3对应的是49,50,51。
回复 使用道具 举报
遇到这种情况要查阅下API文档。
public byte[] getBytes() 的描述是:
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

说明这个方法返回的是一个byte数组,数组每个元素就是每个字符对应ASCII编码表位置,1对应49,所以123输出49,50,51

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
这里运用了编码的知识点


  1. <p> </p><p>String s2="123";
  2. byte[] by1=s2.getBytes();//这是编码的过程,数组by1中存放是1,2,3这三个字节的二进制数,输出的时候就转换成十进制了。</p><p>提醒:byte[]中存放的元素是byte字节,由8个bit位组成的二进制数</p><p>//char[] ch = s2.toCharArray();数组ch中存放的才是1,2,3这三个字符
  3. for(int x=0;x<by1.length;x++)
  4. {
  5. </p><p>        sop(by1[x]);
  6. </p><p>}</p><p>String s2="123";
  7. byte[] by1=s2.getBytes();//这是编码的过程,
  8. for(int x=0;x<by1.length;x++)
  9. {
  10. </p><p>        sop((char)by1[x]);//这是解码的过程,将byte数组每个元素按照ANSI码表进行解码
  11. </p><p>}</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 freehiker 于 2013-11-26 21:15 编辑

getBytes()返回的是byte[],若吧byte[]遍历出来,
byte[] bytes  = "abc".getBytes();
             for(byte b : bytes){
                     System.out.println(b);
             }
             //结果97 98 99
结果是ascii编码对应的值
回复 使用道具 举报
首先要说一下getBytes();方法的作用,它使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。也就是你的前两行代码。
  1. String s2="123";
  2. byte[] by1=s2.getBytes();
复制代码

这时的数组中就存了转换为字符为1,2,3的数组。实际上里面存的byte数据49,50,51.你在通过下面的遍历数组,打印出来就是49,50,51了。
    for(int x=0;x<by1.length;x++)
    {
            sop(by1[x]);
    }

如果还不清楚,给你看下面代码的执行结果你就明白了。
  1. System.out.println((char)49);
  2. System.out.println((char)50); System.out.println((char)51);
复制代码

结果输出1,2,3

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马