byte b = by[x];//by是一个字节数组,x的初始值是int型的0,也就是取字节数组by的第一个字节
return b&0xff;
byte占一个8位,与255之后会不会改变byte的原值呢?为什么?

解决方案 »

  1.   

    import java.io.*;
    class MyBufferedInputStream 
    {
    InputStream is;
    byte[] by = new byte[1024];
    int pot = 0;
    int count = 0;
    MyBufferedInputStream(InputStream is)
    {
    this.is = is;
    }
    public int myRead()throws IOException
    {
    if(count==0)
    {
    count = is.read(by);
    if(count<0){
    System.out.println("conut");
    return -1;
    }
    pot = 0;
    byte b = by[pot];
    pot++;
    count--;
    return b&0xff;
    }
    else if(count>0)
    {
    byte b = by[pot];
    pot++;
    count--;
    return b&0xff;
    }
    return -1;
    }
    }
    源代码是为了包装InputStream
      

  2.   

    我的理解是,如果字符b(这里是如果)他代表8个二进制位1,他就是-127那么与运算之后
    11111111&0000000011111111,与了之后是不是也变成0000000011111111了,那是不是值为255呢?
      

  3.   

    我错了
    11111111 java中对应的是-1
    -127 对应的是 10000001 
    最后是255
    因为byte参与运算后结果上转为int了,且0xff一个字节以外的高位为0
      

  4.   

    ^ 我理解错楼主要问的意思了;b&0xff 的返回值是int型的…… ,但其值的大小不变