java第六周学习总结

学号20145336 《Java程序设计》第五周学习总结

教材学习内容总结

第十章 输入与输出

InputStream与OutputStream

  • java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。从程序角度来看,如果将数据从来源中取出,可以使用输入串流,如果将数据写入目的地可以使用输出串流。在java中,输入串流对象为java.io.InputStream实例,输出串流对象为java.io.OutputStream实例。流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的。

  • read和write:每次从InputStream读入的数据,都会先植入byte数组中。InputSream的read()方法每次都会尝试读byte数组长度的数据,并返回实际读入的字节,只要不是-1,就代表读取到数据。剋使用OutputStream的write()方法,指定要写出的byte数组、出事索引与数据长度。

  • 标准输入输出 :System.in和System.out分别代表标准输入和标准输出。可以使用System的setIn()方法指定InputStream实例,重新制定标准输入来源。标准输出可以重新导向至文档,只要执行程序是使用>将输出结果导向至指定的文档。若hello类执行了System.out.println("HelloWorld"):>java hello>Hello.txt System.in: 标准输入,默认关联到键盘(终端输入) System.out: 标准输出,默认关联到显示器(终端输出) System.err: 标准错误,默认关联到显示器(终端输出) 输入输出重定向:setIn,setOut,setErr

  • 装饰器类:InputStream、OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。常用的打包器具备缓冲区作用的BufferedOutputStream、BufferedInputStream,具备数据转换处理的DataInputStream、DataOutputStream,具备对象串行化能力的ObjectInputStream、ObjectOutputStream等。 (1)BufferedInputStream与BufferedOutputStream •BufferedInputStream与BufferedOutputStream主要在内部提供缓冲区功能,操作上与InputStream、OutputStream并没有太大区别。 (2)DataInputStream与DataOutputStream •DataInputStream、DataOutputStream用来装饰InputStream、OutputStream,DataInputStream、DataOutputStream,提供读取、写入Java基本数据类型的方法,像是读写int、double、boolean等的方法。(3)ObjectInputStream与ObjectOutputStream •ObjectInputStream提供readObject()方法将数据读入为对象,而ObjectOutputStream提供writeObject()方法将对象写至目的地。可以被这两个方法处理的对象,必须操作java.io.Serializable接口,这个接口并没有定义任何方法,只是作为标示之用,表示这个对象是可以串行化的。

第十一章 线程与并行API

  • 线程:到目前为止介绍过的各种范例都是单线程程序,也就是启动的程序从main()程序进入点开始至结束只有一个流程。有时候还需要设计程序可以拥有多个程序,也就是所谓的多线程程序。 要让目前的流程暂停时间,可以使用java.lang.Thread的静态sleep()方法,指定的单位是毫秒,调用这个方法必须处理java.lang.InterruptedException。 如果想在main()之外独立设计流程,可以撰写java.lang.Runnable接口,流程的进入点是操作run()方法。从main()开始的流程会由主程序执行,可以创建Thread实例来执行Runnable实例定义的rin()方法,要启动线程执行指定的线程,必须调用Thread实例的start()方法。 如果主线程中启动了额外线程,默认会等待被启动的所有线程都执行完run()方法才终止JVM,如果一个Thread被标示为Daemon线程,在所有的非Daemon线程都结束时,JVM就会终止。 每个线程都属于某个线程群组,如果没有指定,则归入产生该子线程的线程群组,也可以自行指定线程群组,线程一旦归入某个群组,就无法再更换。ThreadGroup的某些方法,可以对群组中所有线程产生作用。如果想要一次取得群组中所有线程,可以使用enumerate()方法。activeCount()方法取得群组的线程数量。

  • 并行API:使用Thread建立多线程程序,必须亲自处理synchornized、对象锁定、wait()、notify()、notifyAll()等细节,如果需要的是线程池、读写解锁高等级操作,从JDK5之后提供了java.util.concurrent,可基于其中的API建立更稳固的并行应用程序。并行API可以分为以下几个类:1.Lock、ReadWriter与Condition。2.使用Executor。3.并行Collection简介

代码调试中的问题和解决过程

本周代码托管截图:

学习进度条

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标 5000行 30篇 400小时  
第一周 150/150 1/1 15/15  
第二周 150/400 1/2 15/30  
第三周 150/550 1/3 20/50  
第四周 150/700 1/4 16/56  
第五周 150/850 1/5 19/65
第六周 150/1000 2/7 23/88

 

posted @ 2016-04-10 23:20  20145336张子扬  阅读(149)  评论(1编辑  收藏  举报