20155302 2016-2017-2 《Java程序设计》第6周学习总结

教材学习内容总结

  • Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的。

  • InputStreamReader是InputStream和Reader之间的桥梁,由于System.in是字节流,需要用它来包装之后变为字符流供给 BufferedReader使用。

  • InputStream 为字节输入流,它本身为一个抽象类,必须依靠其子类实现各种功能,此抽象类是表示字节输入流的所有类的超类。 继承自InputStream 的流都是向程序中输入数据的,且数据单位为字节(8bit)。

  • OutputStream的基本方法: void write(int b) throws IOException 向输出流写入一个字节数据 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

  • Reader的基本方法: int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾

  • Writer的基本方法 void write(int c) throws IOException 向输出流写入一个字符数据 void write(String str) throws IOException将一个字符串中的字符写入到输出流 void write(String str,int offset,int length) 将一个字符串从offset开始的length个字符写入到输出流 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

  • java.lang.Thread是Java API中的基础线程类。定义线程的方法有两种:一种是制作Thread的子类,覆盖run()method,然后实例化你的Thread子类;另一种是定义实现了Runnable method的类(也就是定义run() method),然后传递此Runnable对象的instance给Thread()构造函数。

  • 线程可以以不同的优先级运行。指定优先级的线程通常会在已无具较高优先级的线程等待时才会运行。

  • 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

  • 通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。

  • 线程完成run()方法后,就会进入Dead,进入Dead的线程不可以再次调用start()方法,否则会抛出IllegalThreadStateException。

  • 线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。

  • 每个对象都会有一个内部锁定,或称为监控锁定。被标示为synchronized的区块将会被监控,任何线程要执行synchronized区块都必须先取得指定的对象锁定。

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

  • 问题1:一个线程运行时发生异常会怎样?
  • 问题1解决方案:如果异常没有被捕获该线程将会停止执行。Thread.UncaughtExceptionHandler是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异常将造成线程中断的时候JVM会使用Thread.getUncaughtExceptionHandler()来查询线程的UncaughtExceptionHandler并将线程和异常作为参数传递给handler的uncaughtException()方法进行处理。
  • 问题2:为什么wait和notify方法要在同步块中调用?
  • 问题2解决方案:主要是因为Java API强制要求这样做,如果你不这么做,你的代码会抛出IllegalMonitorStateException异常。还有一个原因是为了避免wait和notify之间产生竞态条件。

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

  • 问题1:如下代码为什么打印出来结果只有1次输出,明明使用了2次println啊??

      import java.io.*;public class BasicFileOutput {static String file = "BasicFileOutput.out"; public static void main(String[] args)throws IOException {BufferedReader in = new BufferedReader(new StringReader(BufferedInputFile.read("BasicFileOutput.java")));PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)));int lineCount = 1;String s;while((s = in.readLine()) != null )out.println(lineCount++ + ": " + s);out.close();// Show the stored file:System.out.println(BufferedInputFile.read(file));}}
  • 问题1解决方案:经过我的结对同学学霸秦诗茂的指导与讲解,我明白了,第一个println是输出到文件里去了。第二个println才是输出到控制台。所以我看到在控制台只有一行输出。

代码托管



上周考试错题总结

  • 现有:list是⼀一个合法的集合引⽤用getCollection()返回⼀一个合法集合的引⽤用哪个是合法的?(B,E)

A.or(Object o ; list)

B.for(Object o : getCollection())

C.for(Object o : list.iterator())

D.for(lterator i ; list.iterator() ; i.hasNext () )

E.for(lterator i=list.iterator(); i.hasNext (); )

  • 现有

      public class Demo{public static void main (String[] args){ List al=new ArrayList();a1.add("l");a1.add("2");a1.add("2");a1.add("3"); System.out.println (al);}}上述程序执⾏行行后的输出是哪项?A.[1,2,3]B.[1,2,3,3]C.[1,2,2,3]D.[2,1,3,2]
  • Which of the following methods will not compile? :(B,D)

A.private void method1(String name) { if (name.equals("star"))

throw new IllegalArgumentException(name);

}

B.private void method2(int age) { if (age > 30)

throw Exception();

}

C.public double method5() throws Exception { return 0.7;

}

D.protected double method4() throws Exception { throw new Throwable();

}

  • 表示键值对概念的接⼝口是?:(D)

A.Set

B.List

C.Collection

D.Map

  • 创建⼀一个只能存放String的泛型ArrayList的语句句是哪项?:(B)

A.ArrayList al=new ArrayList(); B.ArrayList al=new ArrayList() C.ArrayList al=new ArrayList(); D.ArrayList al =new List();

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分
  6. 其他加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况

    • 20155322
    • 结对照片
    • 结对学习内容
      • 串流继承的内容和架构

      • 第十章与第十一章课后练习
      • 代码调试中遇到的困难和问题

      • 线程内容中synchronized,wait(),notify(),notifyAll()等使用方法和环境
  • 上周博客互评情况
    • 20155333
    • 20155233
    • 20155230
    • 20155339
    • 20155306

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

本周的学习由于其他科目实验,在代码量上有些不足,希望自己下周可以再在代码上下更多的功夫,只有自己动手敲代码,在做中学才是最好的学习手段和方式,对于书中不好理解的知识要在仔细思考的条件下百度或者计时问老师,不要让盲点陪自己过夜,边学边反思自己哪里做的不够好,及时修正。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 2/2 20/20
第二周 140/160 2/4 18/38
第三周 113/273 1/5 20/58
第四周 335/608 1/6 20/78
第五周 1159/1408 1/7 30/108
第六周 452/1860 1/8 20/128

转载于:https://www.cnblogs.com/STILLlover521/p/6654815.html

20155302 2016-2017-2 《Java程序设计》第六周学习总结相关推荐

  1. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

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

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  3. 20165203 2017-2018-2 《Java程序设计》第一周学习总结

    20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的 ...

  4. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

  5. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  6. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  7. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  8. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  9. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

  10. 20175208 《Java程序设计》第九周学习总结

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

最新文章

  1. 菜鸟学SSH(十二)——Hibernate与Spring配合生成表结构
  2. 计算机基础学习必看书籍汇总
  3. mysql, 一对多查询, 统计一表数量
  4. 7种从头开始免费学习编程的方法
  5. html段落颜色字体字号,(前端)html与css,css 5、颜色、字体、字号量取方式
  6. redis 同步化操作
  7. 执行SAP Hybris install.bat遇到JavaVersionChecker版本检测失败的问题
  8. Spring Boot2.0 整合mybatis、分页插件、druid
  9. vue2.x 给一个对象里添加一个没有的属性
  10. 写在注册测绘师考完之后
  11. 在线随机抛硬币正反面统计工具
  12. java基础考试_Java基础试题及其答案
  13. 在五环六环之间,有最真实的北京
  14. 视频预测算法vid2vid比MCNet好在哪里?
  15. 静静的推荐分数 20作者 陈越单位 浙江大学
  16. java网易云信怎么用_网易云信 SDK
  17. 80核处理器_【装机帮扶站】第690期:12核amp;16核怪兽CPU配置推荐
  18. isb 汇编_DSB,ISB,DMB指令
  19. 强固型宽温AM5728监测高铁受电弓视频方案评估
  20. 前端web开发学习路线图

热门文章

  1. 发生在“注解”@的那些事儿
  2. (大整数类Biginteger)大斐波数
  3. linux闹钟软件下载,电量充满警示闹铃
  4. python获取文件路径下指定的类型的文件_python学习1-列出指定目录下的指定类型文件...
  5. python3+requests+unittest_python3+requests+unittest:接口自动化测试(一)
  6. java循环的内部改变循环变量的值_java在for循环中怎样修改参数值?
  7. xss挖掘思路分享_新手指南 | permeate靶场漏洞挖掘思路分享
  8. android 页面整体滑动,ScrollView 实现页面整体滑动
  9. 已知圆心,半径,角度,求圆上的点坐标
  10. OC 中NSString与NSString 的比较