黑马程序员技术交流社区
标题:
IO流的一点疑问
[打印本页]
作者:
吴刚
时间:
2012-9-17 14:19
标题:
IO流的一点疑问
本帖最后由 吴刚 于 2012-9-17 14:23 编辑
import java.io.*;
public class TestReader
{
public static void main(String args[])
{
FileReader fr = new FileReader("大家自己写路径");
int ch = fr.read();
while(-1 != ch)
{
System.out.printf("%c", ch);
ch = fr.read();
}
fr.close();
}
}
复制代码
想请问一下代码中的read方法的返回值是int类型的数据,还有就是返回的int数据是字符串的unicode编码还是1,0,1,0的二进制数据?字符读取是一个字符字符读取的,那么返回的是字符的整数表示形式吗?如果是的话,那字符是两个字节,为什么不用short。。。
作者:
赵永康
时间:
2012-9-17 15:24
read()方法,所读取的是单个字符, 当返回值是-1的时候,表示此时流已经读到末尾,没有可读了的!返回值是int 本人理解可能是自动提升了吧??同样求解...
作者:
程金
时间:
2012-9-17 17:00
本帖最后由 程金 于 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, 就可以得到原有数据
作者:
李健_8
时间:
2012-9-17 17:37
java中默认的返回值类型是 int int的范围比short要大 其实用short也是可以的 只要不超出范围
就像你用给你两个盒子 一个中等盒子 一个小盒子 你都可以用 不过默认是中等盒子 用想小盒子的话 需要实现打个招呼
360截图20120917172752718.jpg
(56.73 KB, 下载次数: 37)
下载附件
2012-9-17 17:28 上传
作者:
吴刚
时间:
2012-9-17 22:46
谢谢楼上的几位朋友、、、
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2