A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡文彬 中级黑马   /  2014-3-9 22:25  /  741 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

BufferedReader bfr=new BufferedReader(new FileReader(f));
上面这句定义了一个字符文件流,
我就纳闷了“ab中国”,在文件中就包含单个字节又包含双字节,他为什么能读出,后来发现
FileReader 是InputStreamReader的子类,既转化流,将字节流转化成字符流,
我认为转化过程是这样的 :1.先读字节a  然后将转化成字符啊
                                     2.b与1一样
                                     3.将中的前个字节读出,发现最高位是1,接着读中 的第二个字节,再根据编码表解码成中
                                     4.国与中一样

   我要问的是:所有流操作都是在内存中进行的(过程),无非是读写,那么给变量赋值是否也涉及到流呢?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
我认为:流操作不仅仅只涉及内存,假如你要都去硬盘中一个文件并打印到控制台,这个过程中先是从硬盘读取数据到内存,然后打印到控制台。对与你所说的对变量赋值是否涉及到流要看这个变量是否需要持久化,也就是存到硬盘或者其他持久化设备上。简单的变量赋值应该没有用到流,因为如果用到流就要创建流对象。简单的int a=3;这样的语句没有用到流。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
赵卓辉 发表于 2014-3-10 02:07
我认为:流操作不仅仅只涉及内存,假如你要都去硬盘中一个文件并打印到控制台,这个过程中先是从硬盘读取数 ...

流是对数据传输的一个抽象。去硬盘上读数据,实现要在内存中创建流,然后,cpu中断了,将硬盘上的字节数据利用io系统,读到一块内存中(比如0x0000到0x0004被赋值整数666),这时,cpu就可以操作者数据了,同样int x=666;也会在内存中(比如0x0040到0x0044被赋值666),不都涉及到赋值操作吗

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马