本帖最后由 M路 于 2014-7-16 11:39 编辑
- public int myRead()throws IOException
- {
- //通过in对象读取硬盘上数据,并存储buf中。
- if(count==0)
- {
- count = in.read(buf);
- if(count<0)
- return -1;
- pos = 0;
- byte b = buf[pos];
- count--;
- pos++;
- return b&255;
- }
- else if(count>0)
- {
- byte b = buf[pos];
- count--;
- pos++;
- return b&0xff;
- }
- return -1;
- }
复制代码 类型转换问题,这是毕老师java基础第19天-14里面的一段代码,关于类型转换,我有些疑问。在return b&255 的时候,b本来是byte类型的,提升为int类型,之所以要与上255,是为了避免读到11111111的时候,while循环结束,我不明白的地方是,当b为11111111的时候与上255结果还是11111111,这样提升为int之后不还是32个1吗?为什么提升完之后是24个0加8个1?
|
|