当前位置:首页 > 生态圈 > 正文内容

java是什么原因(java为什么这么流行)

abcsky886个月前 (10-29)生态圈93

本文分享给大家的是:

初学者觉得复杂是很正常的,归根结底是因为没有理解JavaIO框架的设计思想:可以沿着这条路想一想:1,学IO流之前,我们写的程序,都是在内存里自己跟自己玩比如,你声明个变量,创建个数组,创建个集合,写一个排序算法,模拟一个链表,使用一些常用API,现在回想一下,是不是在只是自己在内存里玩一玩?计算机组成包括运算器,控制器,存储器,输入设备,输出设备。

java是什么原因(java为什么这么流行)

那么你前面的工作,仅仅够你的程序和内存以及CPU打打交道,如果你需要操作外部设备呢?比如键盘,显示器,再比如,最常见的外设:硬盘?甚至未来世界里的每家每户都有的机器人,“如何让你的程序和机器人进行交互呢?”。

2,所以程序设计语言网络推广如何引流必须要提供程序与外部设备交互的方式,这就是IO框架的由来我们需要和外部设备进行数据的交互那么,计算机是通过什么和外部进行交互的呢?很简单就能想到:数据线数据线里传播的是什么呢?一个词:比特流。

比特就是bit的谐音,计算机中“位”的意思,代表0或11位或者1bit,就是一个0或一个1但是,毕竟0或1不能表示什么,所以计算机更常见的基本单位是字节,也就是用8位0或1组成的一段数据以上是对比特流的由来做一个简单地解释。

(比特流一词来自于计算机网络原理中,对物理层传输内容的描述:物理层(网线)中传输的是“比特流”,在这里借用这个名词代指数据的表示形式,帮助理解)上面两段话的意思,其实是为了下文做铺垫,网络推广如何引流帮助理解输入输出最重要的概念:方向性。

输入还是输出,是相对于程序或者说相对于内存而言的数据从外流到内存,就是输入(读),数据从内存出去,就是输出(写)3,既然计算机和外界进行信息的输入和输出交互,用的是比特流,那么很容易就能想到IO流名字的由来了。

就是比喻输入输出的数据像流一样我们可以这么认为,任何外部设备与内存之间输入输出的操作,都是需要输入输出流(IO流)来完成的,这里的IO流,指的就是比特流(或者称字节流)这些外部设备,包括,键盘(标准输入设备),显示器(标准输出设备),音响,网络上另一台主机,甚至你玩游戏用的游戏手柄,以及各种各样的信号传感器,都可以叫做外部设备,和这些设备之间进行数据网络推广如何引流交互,显然不可能靠之前学习的那些数组,集合,常用类,String等等来完成。

而是要靠和外界数据交换的类来完成靠什么来进行数据交换,就是前面说的,比特流,或者说IO流类4,那么,既然要学习IO流,就得针对某一个输入输出设备来学习哪种输入输出设备最重要同时也最常见?当然是硬盘硬盘在这里的含义也可以理解为文件系统。

(Java程序是运行在某操作系统平台上的应用软件JVM上的,实际上Java程序可见的并不是硬盘,而是操作系统提供的文件系统,因此此处可直接理解为文件系统)因此,我们学习IO流的时候,基本上是学习的Java如何操作文件系统,除了文件系统,我们还能够了解Java操作标准输入输出设备,如Syst网络推广如何引流em.in和System.out。

5,知道了学习的方向,是要使用Java操作文件系统,那么首先要学习的就是文件的表示,即File类然后,我们要操作做文件,虽然我们大部分操作都是操作文件系统,但是要明白IO流的概念不仅仅局限在操作文件上,前面我已经提到了,我们的编程语言是要能操作所有的输入输出,因此,API提供了两个顶层抽象类,用来表示操作所有的输出输出:InputStream,OutputStream。

并且,这两个类表示字节的输入输出,因为输入输出的本质是字节流这里注意体会一句话“字节流是最最基本的流”,这句话的由来就是因为计算机底层传递的就是字节那么,当我们要操作文件的时候,就需要具体的对文网络推广如何引流件系统操作的IO实现类,于是我们需要学习FileInputStream和FileOutputStream,它们是文件输入输出字节流。

这里之所以FileInputStream/OutputStream作为子类出现,按照面向对象思想理解就是,将来还有别的字节流来操作别的设备(比如将来需要通过操作网络设备获取网络数据,再比如需要操作机器人,那么或许就会再来个RobotInputStream和RobotOutputStream,这些新的需求也就都可以继承这个体系)(这里顺便提一句架构设计思想,其中有一种设计原则叫“开闭原则”,其核心是:一个对象对扩展开放,对修改关闭。

就是说,一旦写好了某个类,就不要去网络推广如何引流轻易改动他,而是要保证它一直能运行下去,而面对新的功能需求时,只要在原有代码上增加即可,而不是修改原有代码要做到开闭原则,就需要分清需求中未来哪些部分是稳定的,哪些是很可能变化的,而往往抽象的部分是最稳定的,把稳定的内容分离出来,就能满足开闭原则。

这就是为什么Java的类设计得如此之琐碎,为什么我们要从继承关系角度去理解JavaIO流的设计)6,学了文件IO字节流之后,我们会发现原始的字节流对象用起来没那么高效,因为每个读或写请求都由底层操作系统处理,这些请求往往会触发磁盘访问、网络活动或其他一些相对昂贵的操作。

不带缓冲区的流对象,只能一个字节一个字节的读,每次都调用底层的操作系统API,非常网络推广如何引流低效,而带缓冲区的流对象,可以一次读一个缓冲区,缓冲区空了才去调用一次底层API,这就能大大提高效率所以又有了BufferedInputStream和BufferedOutputSteam,他们的用法是把字节流对象传入后再使用,也相当于把它俩套在了字节流的外面,给字节流装了个“外挂”,让基本字节流如虎添翼。

7,说到操作文件,就不得不提到文件的分类和编码格式文件分为二进制文件和文本文件,二进制文件是用记事本打开后看不懂得,他们的编码格式是特殊的,比如pdf文件,exe文件记事本打开后人能看懂的只有纯文本文件,我们处理文件(或者说处理任何的字节流),就免不了处理一些文本文件(或文本字节流)。

如果是网络推广如何引流英语国家的人还好说,因为他们是用的常用字符用一张ASCII码表就能表示得出来,用一个字节就能表示一个字母但是显然,对非英语国家的人来说,一个字节的大小无法表示他们所有的文字因此,人们需要有能够处理字符的类,或者说这个类提供一个功能:就是把输入的字节转成字符,把要输出的字符转成计算机可以识别的字节。

所以,你需要两个转换流:InputStreamReader和OutputStreamWriter这两个类的作用分别是把字节流转成字符流,把字符流转成字节流但是这两个流需要套在现成的字节流上才能使用,当中用到的设计模式也就是常说的装饰模式。

当字节流被转成字符流之后,恭喜你,你可以不必操作字节流了,而是可网络推广如何引流以用人类的方式read和write各种“文字”8,(那么,我们为什么还要学习字节流?因为字节流依然有它的作用范围首先,所有的流都是建立在字节流之上的,比如字符流。

字节流或许可以读任何字节,但是他处理不了Unicode(万国码),他处理不了Data流,Object流,也就是说,它做不了高级的事情,只能读写最原始的东西字节流好比动物,能看,能听,能汪汪叫,但是他不能读书,不能写字,不能理解更高级的知识。

其次要注意的是,字符流只能用来处理文本文件,也就是只能来处理字符,如果出来用来处理二进制文件,会带来错误,所以处理二进制文件只能用字节流),9,还是回到文件系统,我们最常见的是和文件系统打交道,那么网络推广如何引流针对如此常见的用途,读取文本文件能不能用一种方便的方式呢?当然,大牛们替你想到并提供了。

FileReader和FileWriter这两个流对象可以直接把文件转成读取、写入流让你省去了创建字节流,再套上转换流的步骤看看这类名起的,实际上很形象,xxxReader和xxxWriter,明摆着告诉你“阅读和书写”都是“人可以做的”也就是他们表示的是字符流。

同理上面的InputStreamReader和OutputStreamWriter,表示的是把字节流转成人可读的,把字节流转成人可写的因此他们的顶层抽象类:Reader和Writer,表示的是所有人类可读可写的字符流统称。

10,同上面说的缓冲区的作网络推广如何引流用,再把Reader和Writer做成高效的,就需要BufferedReader和BufferedWriter,把它们套在Reader和Writer上,就能实现高效的字符流11,讲到这里,IO流的大概思想已经说的差不多了,是不是觉得之前混乱的那些类,现在知道他们的作用和设计思想以后,稍稍清晰了许多呢?可以简单地记,字节流是基础,理论上可用于所有的输入输出场景,内容是文字的字节流可以通过转换流转成字符流,转换流是字节流和字符流之间相互转换的桥梁,把字节流转成字符流,离不开转换流,字符流是对于字符功能的增强可用来处理“文字”,操作文件系统应用范围最广,所以JDK提供了现成的FileXXX类,用来方网络推广如何引流便编程使用。

另外,还有许多类是“在内存里自己和自己玩的”比如ByteArrayReader/Writer,PipedWriter/Reader,它们虽然也称为“流对象”但是他们的数据不出内存,所以它们的close()方法可有可无。

以及其他带有某些功能的类,比如序列化流,比如数据输入输出流,等等IO流对象的用法和作用大同小异,其使用环境和意义取决于具体需要,用到了再具体分析即可这里主要介绍了JavaIO框架的设计思想,但具体底层实现细节,还需要学习JVM相关知识,以及微机原理和接口技术等等底层的课程。

举报/反馈

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/753.html

分享给朋友:

“java是什么原因(java为什么这么流行)” 的相关文章

2年java,华为面试,一面 挂

本篇文章给大家谈谈 一位深圳的球友,上周去华为的面经,准备不充分,最后就是面试没通过昨晚上,咱们通了电话,一起总结了这次面试失败的原因失败的原因有三点:1.自我介绍现场发挥(临时组织语言,时间太短)2.八股文背的太少3.慌乱不堪(主要是前面两个原因直接导致的) 面试过程自我...

动力节点java基础教程(动力节点it培训官网)

本文分享给大家的是: 原标题:动力节点java培训怎么样?java培训我的经历动力节点正确的选择会让你的学习更有成效很多想学java的同学都有这样的顾虑:学了四个月的java能有自己理想的工作吗?只要你的java技术过关,善于学习和总结,结果是肯定的!。 在动力节点随着学习...

二月二龙抬头用英语怎么说(二月二龙抬头的英语作文)

本文分享给大家的是: 今天是农历二月二 龙抬头的日子 又称龙头节 二月二 龙抬头大仓满 小仓流可见 这一天对中国人来说是非常重要的那么问题来了“龙抬头”英语怎么说?关于龙抬头的英文表达Dragon Heads-raising DaySpring Dragon Festiva...

java的数据类型有哪几种(java基础的数据类型)

今天给各位分享 什么是Java 基本数据类型前面讲过变量,程序中的变量是一个存储单元,用于存储程序中的数据而今天讲的数据类型是用来约定变量存储空间的大小约定变量存储空间大小的目的是根据数据大小选择合适的存储空间,将合适的数据存储到相应大小的存储空间可以避免计算机资源浪费,提高软件运...

javaweb面试题及答案(javaweb试题)

本文分享给大家的是: JavaWeb阶段考试题真题讲解,包含笔试题和机试题,为你提供解题思路,培养你的解题思维,同时点明考点,结合文档进行重点解读,加深你的印象,预祝各位学员考试顺利i通关关于获取更多考试题以及考试题的讲解,感兴趣的小伙伴可以点击视频链接一起学习哟~。 「链...

java培训班出来的都怎么样了(java培训班出来的好找工作吗)

本文分享给大家的是: 从培训机构出来,感觉什么都不会,是自己在学校没有好好学还是自己没有做项目练习?亦或是您所在的这家java培训机构根本没有带您们做项目练习?如果是这样,那您现在懊悔也好,还是欲哭无泪也罢现在的问题是解决您的现状。 3种解决方法:1、找自己的培训机构老师,...