为什么IO读取流的read方法返回的是int而不是byte的原因!
2012-05-06 14:34
537 查看
//为什么read()方法返回的是int类型而不是byte 1个字节8位,(byte) 4个字节32位,(int) byte -1 --->int -1(将byte提升为int) byte 是1一个字节,即8位,如果取到连续11111111 (8个1) 为了避免读到连续8个1(就是-1)和定义的结束标记-1相同(read()返回-1就是读到末尾)。 所以在保留11111111的基础上,在转成int类型时,前面24位补0而不补1. 如果是补1 11111111 11111111 11111111 11111111 不还是-1?是-1的原因是因为前面24位补的是1,只要在前面补0, 既可以保留原字节数据不变(最低8位),又可以避免-1的出现。 11111111 11111111 11111111 11111111 &00000000 00000000 00000000 11111111 ---------------------------------------- 00000000 00000000 00000000 11111111 //那提升为int 读一个字节不就变成4个字节了么?那往外写的时候大小不就变成原来数据的4倍了么? 答:read 方法在提升的同时保证了不出现-1的情况,但是write有一个强转动作,就是取最低8位, 所以说写出去的还是有效数据,保证原数据没有变化!
相关文章推荐
- (转)为什么IO读取流的read方法返回的是int而不是byte的原因!
- 为什么read()方法返回的是int类型而不是byte
- read()方法读取的是一个字节,为什么返回是int,而不是byte
- java.io.FileInputStream.read()的返回值类型为什么是int而不是byte
- java 为什么InputStream.read()读取一个byte却返回一个int呢?
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- Java中字节流和字符流的read()方法为什么返回的值是int类型
- Java中字节流和字符流的read()方法为什么返回的值是int类型
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- java基础--Java 字节读取流的read方法返回int的原因
- java基础--Java 字节读取流的read方法返回int的原因
- Java中字节流和字符流的read()方法为什么返回的值是int类型
- 为什么InputStream.read()读取一个byte确返回一个int呢?
- 再论javaIO之拷贝MP3(read方法返回int的原因)
- Java 编程下 IO 中的输入流的 read() 方法返回值为什么是 int 值
- 关于龙哥在Netty课程中的FileChannel调用read方法返回0的原因解析
- rs返回值的问题:JDBC ResultSet#getInt方法, 若数据库中记录的数值为null,getInt返回的是数值“0”,而不是null!
- 关于java字节流的read()方法返回值为int的思考
- Java 编程下 IO 中的输入流的 read() 方法返回值为什么是 int 值(科普一下吧,某个大侠写的)
- java 编程下 IO 中的输入流的 read() 方法返回值为什么是 int 值