20162308《程序设计与数据结构》第7周学习总结
20162308 2016-2017-2 《程序设计与数据结构》第7周学习总结
教材学习内容总结
- 继承
- 接口
- 掌握抽象类和接口使用
- 会用UML建模工具
- 熟悉Java与密码学相关的API
教材学习中的问题和解决过程
- 方法重写的问题:方法重写的时候,书上的代码,包括《Think in Java》上的代码,都没有显性地标注@Override。但是网上的一些代码,又有标注@Override,查了一些资料,@Override能够让编译器检测是否进行了方法重载,按理说能够增强代码的易读性和可维护性,那么为什么这些书上不注明@Override的理由是什么?
- 《think in java》 太老了,那时Java 还不支持@Override 等标注。@Override 让编译器帮你识别重写是不是正确。比如想重写toString结果写成ToString,有了@Override,编译就通不过。
代码调试中的问题和解决过程
- 多线程的程序运行时运行太快,不能观察到顺序。
- 使用Thread.sleep(Math.Random() * 1000)来减慢速度。
代码托管
- 代码提交过程 & 代码量截图:
上周考试错题总结
- 如果有以下的程序代码:
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小时