20162305 2016-2017-2 《程序设计与数据结构》第7周学习总结
20162305 2016-2017-2 《程序设计与数据结构》第7周学习总结
教材学习内容总结
1.什么是后绑定。
2.多态引用:一个在不同时刻可以指向不同类型对象的引用变量,可以使用继承和接口两种方式创建。
3.通过继承实现多态。
4.什么是接口:接口是一组公共方法,通过这些方法可以与一个对象进行交互。
5.Comparable接口与Iterator接口。
6.通过接口实现多态
教材学习中的问题和解决过程
-
问题1:在通过继承实现多态部分提到了强类型和显式转换两个概念,不清楚是什么意思。
-
问题1解决方案:教材的第二章提到了强类型这一说法,Java是强类型语言,意味着不允许将与变量声明的类型不一致的值赋给该变量(教材P27第三自然段)。
而有关显式转换,我在网上查找了相关的资料,显式专换是让你你定义让这个值类型转换成你要用的值类型
百科中对这部分也有相对清楚的解释,推荐给大家参考 -
问题2:教材中提到的for循环当中的foreach用法,不清楚它的含义。
-
问题2解决方案:查找相关概念,我知道了foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。在其他语句的语法规则中使用的是foreach,而在Java当中则是使用的for,其实就是基本的for语句。
foreach在不同语言中的用法都在这里。
代码调试中的问题和解决过程
-
问题1:程序9.10中,编译出的结果看起来十分混乱,怀疑是我的代码出了问题。
-
问题1解决方案:教材中提到了凯撒加密算法,书中的程序9.9定义的Secret类就是实现了这一算法,在最后产生的第二行是加密后的结果。
我又看了一篇介绍这一加密算法的博客,大概有所了解。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1:下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
A .od -b -tx1 Hello.java
B .od -tcx1 Hello.java
C .od -tc -tx1 Hello.java
D .od -tbx1 Hello.java
正确答案:B、C
原因以及理解情况:-b 是以八进制输出,对Linux命令复习不够。 - 错题2:声称为final的类不能拥有子类。
原因以及理解情况:final修饰符限制继承,特别是作为最终声明的类不能拥有子类。 - 错题三:在Java中子类只能继承一个父类
原因以及理解情况:Java中不支持多重继承。 - 错题四:如果有以下的程序代码:
Int x=100;
Int y=100;
Integer wx=x;
Integer wy=y;
System.out.println(xy);
System.out.println(wxwy);
在JDK5以上的环境编译与执行,则显示的结果是
A .true、true
B .true、false
C .false、true
D .编译失败
正确答案:A - 错题五:下面哪条命令可以把 f1.txt 复制为 f2.txt ?
A .cp f1.txt f2.txt
B .copy f1.txt f2.txt
C .cat f1.txt > f2.txt
D .cp f1.txt | f2.txt
E .copy f1.txt | f2.txt
正确答案:A、C - 错题六:static变量由类的所有实例共享
原因以及理解情况:静态变量在类的所有实例中共享。最后一个变量是常量,公共变量是从对象外部访问的变量,私有变量是对象之外不能访问的变量。 - 错题七:当把对象传递给方法时,实参和形参互为别名 -- TRUE
原因以及理解情况:实际参数是传递到方法中的数据。方法定义中使用了形式参数。当对象被传递到一个方法时,这些值都是引用值,它们成为彼此的别名。 - 错题八:有时允许方法返回的数据类型和方法头部指定的返回值类型不一致 -- FALSE
原因以及理解情况:方法返回的值必须与方法标头中指定的返回类型一致。 - 错题九:如果有以下程序片段:
class Some{
void doService(){
System.out.println("some service");
}
}
class Other extends Some{
@Override
void doService(){
System.out.println("others srrvice");
}
}
public class Main{
public static void main(String[] args){
Other other = new Other();
other.doService();
}
}
以下描述正确的是
A .编译失败
B .显示some service
C .显示other service
D .先显示some service后显示other service
正确答案:C - 错题十:如果有以下程序片段:
class Some{
String ToString(){
return "Some instance";
}
}
public class Main{
public static void main(String[] args){
Some some = new Some();
System.out.println(some);
}
}
以下描述正确的是
A .显示Some Instance
B .显示Some@XXXX,XXXX为十六进制的数字
C .发生ClassCastException
D .编译失败
正确答案:B
结对及互评
上周的测试我和陈是奇同学的成绩都不理想,上周我们两个没能认真地共同学习这一点需要改正,我们两个需要学习好如何协调时间和利用碎片时间来学习进而提高成绩。
点评过的同学博客和代码
其他(感悟、思考等,可选)
这一周的事情感觉什么都做不完,课程,工作,篮球,生活这四部分好像一直在冲突着,我真的需要合理规划时间来完成学习工作任务了,不能让事情一拖再拖。这周的两次考试反映出了我学习上的几个问题:不重视复习,不专注思考。有关Linux命令的习题我也在错,这周的确没有认真地复习这方面的知识,而且有些代码我也看不懂,这说明我的思考也不到位,我都需要改正。最近几周有些学科也要进行期中考试,好好加油,期中考个好成绩,Java也学得更加透彻,这是我最近要实现的小目标。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 19/19 | 1/1 | 10/10 | |
第二周 | 267/283 | 1/2 | 15/25 | |
第三周 | 426/709 | 1/3 | 15/40 | |
第四周 | 913/1513 | 1/4 | 15/55 | |
第五周 | 631/2144 | 1/5 | 15/70 | |
第六周 | 217/2361 | 1/6 | 10/80 | |
第七周 | 448/2809 | 2/8 | 10/90 |