本帖最后由 程金 于 2012-9-17 17:05 编辑
想请问一下代码中的read方法的返回值是int类型的数据,还有就是返回的int数据是字符串的unicode编码还是1,0,1,0的二进制数据?字符读取是一个字符字符读取的,那么返回的是字符的整数表示形式吗?如果是的话,那字符是两个字节,为什么不用short。。。
________________
unicode编码在计算机中还是一个二进制数据,表示任何东西在计算机中都是二进制数据
字符流的read()方法返回单个字符,也就是表示这个字符的unicode编码值的二进制数据;字节流的read的方法返回的是一个字节, 然后被转换成一个int数据,为了是能用-1来表示流末尾
char的取值范围是从0到65535,这个范围内的所有字符, 都有可能在数据中出现,short也是两个字节显然没有多余的数来表示流末尾, 而且有符号的short数取值是-32,768到32,767 无法表示char的unicode编码,我们需要使用一个不可能在数据中出现的值来表示流末尾
那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中 出现而为了返回-1, 那么只能用int
当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1
read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
这时就可以用-1表示流末尾了
而改变后的数据只要强转回byte, 就可以得到原有数据 |