20162308《程序设计与数据结构》第7周学习总结

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

教材学习内容总结

  1. 继承
  2. 接口
  3. 掌握抽象类和接口使用
  4. 会用UML建模工具
  5. 熟悉Java与密码学相关的API

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

  • 方法重写的问题:方法重写的时候,书上的代码,包括《Think in Java》上的代码,都没有显性地标注@Override。但是网上的一些代码,又有标注@Override,查了一些资料,@Override能够让编译器检测是否进行了方法重载,按理说能够增强代码的易读性和可维护性,那么为什么这些书上不注明@Override的理由是什么?
  • 《think in java》 太老了,那时Java 还不支持@Override 等标注。@Override 让编译器帮你识别重写是不是正确。比如想重写toString结果写成ToString,有了@Override,编译就通不过。

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

  • 多线程的程序运行时运行太快,不能观察到顺序。
  • 使用Thread.sleep(Math.Random() * 1000)来减慢速度。

代码托管

  • 代码提交过程 & 代码量截图:
  • 2017-04-16 (2).png

上周考试错题总结

  • 如果有以下的程序代码:
Int x = 100;
Int y = 100;
Integer wx = x;
Integer wy = y;
System.out.println(x == y);
System.out.println(wx == wy);

在JDK5以上的环境编译与执行,则显示的结果是 A

A .true、true

B .true、false

C .false、true

D .编译失败

  • 解析:

    Integer类型在比较大小的时候调用了Integer.valueOf()方法,源码如下:
public static Integer valueOf(int i) {  
        if(i >= -128 && i <= IntegerCache.high)  
            return IntegerCache.cache[i + 128];  
       else  
            return new Integer(i);  
    }  

也就是说-128~127之间的数是直接调用缓存的,所以只要数字一样,Interger引用的地址是一样的。

结对及互评

张师瑜的博客现在高端玩家学Java都开始记笔记了666

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

  • 这周真的是异常忙碌。连着一周一直在肝大创的申报书,了解了很多相关领域的算法,感觉到自己知识的疏浅和领域内大牛思路的广阔。这周主要学的就是K-Means算法,之前一直觉得高数和概率统计没什么用,这次看了很多机器学习的算法,很多之前的知识都在生产环境中得到应用。很大的一个感悟就是,学习一个知识的时候,一定不要感觉没什么用就应付着,等到真正用到了,如果当时没好好学,就会重新学习的过程,又是一个痛苦的过程。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 26/26 1/1 7/7
第二周 81/107 1/2 8/15 String类型的使用
第三周 80/187 1/3 5/20 位运算
第四周 300/487 1/4 8/28 动态数组和迭代器
第五周 132/619 1/5 18/46 OOP编程导论
第六周 90/709 1/6 5/51 多线程
第七周 596/1305 1/7 20/71 K-Means
  • 计划学习时间:8小时

  • 实际学习时间:20小时

参考资料

posted @ 2017-04-16 15:40  20162308马平川  阅读(186)  评论(6编辑  收藏  举报