Java InputStream层次分析
2015-07-22 17:01
288 查看
Java io使用的是设计模式中的装饰者模式,装饰者模式的结构应当为:
![](http://img.blog.csdn.net/20150722170151978?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
对应到Java InputStream上,则为:
![](http://img.blog.csdn.net/20150722170245741?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
对比一下InputStream和Reader的区别:核心是,前者读入的是字节,后者读入的是字符。
不论是InputStream还是Reader,数据源的数据在内存中都是二进制码的形式,但是对于字节流,一次读取一个字节的数据,并返回这一个字节的二进制码对应的整数值。(以下是猜测)而字符流,它是将二进制码转换为字符以后再返回该字符串对应的ascii码整数值。数据的二进制码和ascii码整数值是不一样的,比如数字1,如果是int型,则在内存中为0x00000001,而它如果作为一个字符“1”,对应的ascii码应当为0x31。
对应到Java InputStream上,则为:
对比一下InputStream和Reader的区别:核心是,前者读入的是字节,后者读入的是字符。
不论是InputStream还是Reader,数据源的数据在内存中都是二进制码的形式,但是对于字节流,一次读取一个字节的数据,并返回这一个字节的二进制码对应的整数值。(以下是猜测)而字符流,它是将二进制码转换为字符以后再返回该字符串对应的ascii码整数值。数据的二进制码和ascii码整数值是不一样的,比如数字1,如果是int型,则在内存中为0x00000001,而它如果作为一个字符“1”,对应的ascii码应当为0x31。
相关文章推荐
- 创建eclipse和androidstudio同时支持的android项目
- JAVA矩阵包JAMA学习
- java_加密解密
- 用Java实现二叉树
- Java获取最近一周的时间
- 自己跑通的一个SpringMVC配合Hibernate的demo,写下来,免得以后再跳坑
- java 中字符拼接学习心得
- spring 事务回滚
- Spring(一)Spring相关概念理解及环境搭建
- 深入浅出Java模式设计之模板方法模式
- Java RMI之HelloWorld程序以及相关的安全管理器的知识
- 【Java】假设你正在读取一串整数,每隔一段时间,你希望找出数字X的秩(小于或等于x的值的数目)。
- java 十进制转二、八、十六进制转换函数
- SpringMVC使用FileUpload进行文件上传
- java获取百度网盘真实下载链接
- springmvc controller跳转到页面没有加载css问题
- java虚拟机JVM内存不够,java.lang.OutOfMemoryError
- Java线程中sleep和wait的区别详细介绍
- struts2文件和图片上传-最完整的
- Java路径问题最终解决方案—可定位所有资源的相对路径寻址