20145237第6周学习总结

教材学习内容总结

第十章

•InputStream与OutputStream

流(Stream)是对「输入输出」的抽象。

read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。

write:指定要写出的byte数组、初始索引与数组长度。

•标准输入输出//这部分已经很熟悉了

System.in: 标准输入,默认关联到键盘(终端输入)

System.out: 标准输出,默认关联到显示器(终端输出)

System.err: 标准错误,默认关联到显示器(终端输出)

输入输出重定向:setIn,setOut,setErr

•其余

FileInputStream与FileOutPutStream:文件读写

BufferedInputStream与BufferedOutputStream: 内部提供缓冲,提高效率

DataInputStream与DataOutputStream:基本数据类型与字节的转换

ObjectInputStream与ObjectOutputStream:java.io.Serializable接口

•字符处理类

read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节。为-1时即为未读取到数据。

write:指定要写出的byte数组、初始索引与数组长度。

package cc.openhome;

import java.io.*;

public class IO {

public static void dump(InputStream src, OutputStream dest)

throws IOException {

try (InputStream input = src; OutputStream output = dest) {

byte[] data = new byte[1024];

int length;

while ((length = input.read(data)) != -1) {

output.write(data, 0, length);

}

}

}

}

第十一章 线程与并行API

·单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。示范代码如下:

import static java.lang.System.out;

public class TortoiseHareRace {

public static void main(String[] args) {

boolean[] flags = {true, false};

int totalStep = 10;

int tortoiseStep = 0;

int hareStep = 0;

out.println("龟兔赛跑开始...");

while(tortoiseStep < totalStep && hareStep < totalStep) {

tortoiseStep++;

out.printf("乌龟跑了 %d 步...%n", tortoiseStep);

boolean isHareSleep = flags[((int) (Math.random() * 10)) % 2];

if(isHareSleep) {

out.println("兔子睡着了zzzz");

} else {

hareStep += 2;

out.printf("兔子跑了 %d 步...%n", hareStep);

}

}

}

}

在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。

在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。

JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。

操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

关于ThreadGroup

1.获取目前线程所属线程群组名:Thread.currentThread().getThreadGroup().getName()

2.ThreadGroup的某些方法,可以对群组中所有线程产生作用,interrupt()方法可以中断群组中所有线程,setMaxPriority()方法可以设定群组中所有线程最大优先权。

activeCount()方法获取群组的线程数量 。

enumerate()方法要传入Thread数组,这会将线程对象设定至每个数组索引。

uncaughtException()方法第一个参数可取得发生异常的线程实例,第二个参数可取得异常对象。

3.未捕捉异常会由线程实例setUncaughtExceptionHandler()设定的Thread.UncaughtExceptionHandler实例处理之后是线程ThreadGroup,然后是默认的Thread.UncaughtExceptionHandler。

教材学习中的问题和解决过程

p325页的代码运行结果跟舍友不一样。跟舍友讨论后发现是因为程序中设置了兔子随机睡觉,如果兔子不睡觉就将 hareStep 递增2,表示兔子走两步,只要兔子或乌龟其中一个走完10步就离开循环,根据兔子睡觉的随机性,结果不同

本周代码托管截图

其他(感悟、思考等,可选)

这周因为有四个实验,需要写很多实验报告,而java又有两章需要进行学习,所以学习时间真的很少,java这种自学模式需要我们很大的自制力,能够做到的话确实能够学到许多有用的知识,我还需努力。

学习进度条

|            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|

| --------   | :----------------:|:----------------:|:---------------:  |:-----:|

| 目标        | 5000行            |   30篇           | 400小时            |       |

| 第六周      | 200/1030           |   1/11            | 20/20             |       |

转载于:https://www.cnblogs.com/20145237fhn/p/5375313.html

20145237第六周学习总结相关推荐

  1. 2018-2019-1 20165214 《信息安全系统设计基础》第六周学习总结

    20165214 2018-2019-1 <信息安全系统设计基础>第六周学习总结 教材学习内容总结 1.输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备 2.U ...

  2. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结

    20162303 2016-2017-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 通过继承来创建类,比从零开始编写代码来的更快.更容易也更经济. 继承在父类与子类之间建立了 ...

  3. # 20155337 2016-2017-2 《Java程序设计》第六周学习总结

    20155337 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 •串流(Stream): 数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出, ...

  4. 20155303 2016-2017-2 《Java程序设计》第六周学习总结

    20155303 2016-2017-2 <Java程序设计>第六周学习总结 课堂笔记 高效学习法推荐 看视频学习(2h)→ 以代码为中心看课本,思考运行结果并验证(3h)→ 课后作业验证 ...

  5. 20165331 第六周学习总结

    20165331 第六周学习总结 代码托管 转载于:https://www.cnblogs.com/violence/p/8747482.html

  6. 20172304 《程序设计与数据结构》第六周学习总结

    20172304 <程序设计与数据结构>第六周学习总结 教材学习内容总结 本周主要学习的是树的内容,树由结点和边组成,位于树中较低层的结点是上一层结点的孩子.一个结点只有一个双亲,统一双亲 ...

  7. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...

  8. Linux第六周学习总结——进程额管理和进程的创建

    Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...

  9. 20165234 《Java程序设计》第六周学习总结

    第六周学习总结 教材学习内容总结 第八章 常用实用类 String类 Java专门提供了用来处理字符序列的 String 类.String类在java.lang包中,由于 java.lang 包中的类 ...

最新文章

  1. android RSA加密
  2. union 和 struct 的区别与联系
  3. ASP.NET Core中使用IOC三部曲(三.采用替换后的Autofac来实现AOP拦截)
  4. HTTP协议和HTTPS协议
  5. PCB设计之3W规则和20H原则
  6. 【数学建模】MATLAB应用实战系列(138)-2021年MathorCup高校数学建模挑战赛A题思路解析(附代码)
  7. 偏微分方程数值解程序设计与实现——数学基础
  8. 搜狗批量提交软件-批量提交网站链接
  9. 【杂烩】Tesla M40 训练机组装与散热改造
  10. 运用“孤独九剑”解决项目实际问题(三)
  11. excel如何显示多个独立窗口
  12. 【小程序】组件形式 引入第三方图标iconfont
  13. 什么是Mixin?带你了解Vue中的Mixin混入
  14. Java毕业设计-在线点餐系统
  15. 缓冲技术之三:Linux下I/O操作buffer缓冲块使用流程
  16. Mac 修改maven 配置
  17. GameObject在SetActive(false)隐藏后,其下脚本仍会运行
  18. 简约响应式导航主题VIK WordPress模板
  19. 高性能网络编程总结及《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)
  20. HQChart使用教程86-技术指标OX图

热门文章

  1. RFQ(request for quotation)
  2. 公司行为(Corporate Actions)
  3. ServiceMix中文教程
  4. Oracle中类似于isql或osql的命令行工具
  5. oracle cusor 定义
  6. EasyNVR摄像机网页无插件直播方案H5前端构建之:关于接口调用常见的一些问题(401 Unauthorized)...
  7. nth-of-type(n)
  8. 编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...
  9. 声明属性Hibernate的Annotation注解
  10. Oracle数据库与Access互导实例