20155215 2016-2017-2 《Java程序设计》第4周学习总结
20155215 2016-2017-2 《Java程序设计》第X周学习总结
教材学习内容总结
第六章
- 继承,避免多个类间重复定义共同行为。子类继承父类,再扩充(extends)其他行为。
- 多态和is-a
- Cast:扮演。编译程序住嘴语法。
- 重新定义:(操作接口相同,方法操作内容不同)
- protected
- final
- 父类中可以重载多个构造函数,如果子类构造函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。如果想执行父类中的某个构造函数,可以用super()来指定。this()与super()只能选择一个调用,而且一定要在构造函数第一行执行。
例如:运行结果1
第七章
- 接口
- 定义行为:interface,如接口中的方法可声明为public abstract。接口中的方法没有操作时一定得是公开且抽象的。也可以省略public abstract。
- 操作接口:implements
- 枚举常数:public static final
- 类可以操作两个以上的类,接口可以继承别的接口。
- 在接口中可以定义常数,但只能定义public static final的常数,在程序中可以省略。
教材学习中的问题和解决过程
第六章
- 1问题:JVM的垃圾收集机制是如何运行的?
- 回答:编程中操作内存是很关键的,在C/C++语言当中,划出的内存,使用结束以后都需要释放掉,说直白一点,内存就是一亩地,划出一小块地方来种玉米,玉米收割以后,得把地还回去,让别人来种地。但是在编C++的时候,还地的时候很关键,就是内存什么时候用完了,不再需要了,这个时机不好判断,不能还没用完就释放,当然也不能释放两次,这个对编程功底和指针的使用要比较熟练。在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。什么时候去收这个垃圾,不需要程
序员来做,有了Java垃圾回收机制,不再需要的对象占用的内存空进会自动被回收。Java语言消除了程序员回收无用内存空间的责任;它提供一种系统级线程跟踪存储空间的分配情况。在JVM空闲时,检查并释放那些可被释放的空间。当然,C++的空闲内存回收时机是一空闲下来基本上马上就会被回收(依赖程序员水平),但是Java垃圾回收机制还没有那么智能,它并不是在一个对象成为无用对象以后立马就去回收它所占用的空间,而是隔一定时间,统一检查空闲内存,并且回收释放。总之Java垃圾回收是减轻程序员负担,提升编程效率的一种方式。
参考资料:
JAVA虚拟机(JVM)和垃圾收集机制是什么
第七章
-
问题1: 什么是实例化?
-
回答:在面向对象的编程中,通常把用类创建对象的过程称为实例化。
-
问题2:@Override是什么意思?我在第七章的Fish程序编写上第一次看到了这个语句,一时没有在书上看见解释,
-
答案:我在第七章的Fish程序编写上第一次看到了这个语句,一时没有在书上看见解释,然后就上网查了一下。@Override简单理解就是这个句话下边的方法是继承父类的方法,告诉你说下面这个方法是从父类/接口 继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记。
Java中@Override的作用
代码调试中的问题和解决过程
-
1问题:我在编写第六章的RPG程序时,出现编译错误。
-
1解决方案:在关于类的程序中,每一个继承关系都不是孤立的,所以要想引用一个子类,必须保证之前的子类定义文件名称一致。我就是犯了这个错误。在修改之后就编译正常并运行成功了。
代码托管
-
代码提交过程截图:
-
代码量截图:
上周考试错题总结
- 1.填空:Linux Bash中,(grep )命令可以进行全文搜索。
grep与find的区别
Linux find和grep的区别
-
4.填空:System.out.println(“”+52+25);的结果是(5225)
-
5.填空:System.out.println(52+25+””);的结果是(77)
-
数据类型的强弱。
""是String类型,比数字类型强。两者相加会自动转换成String类型
按顺序相加
1. “”+52=“52”(这是String),“52”+25=“5225”
2. 52+25=77(数字),77+“”=“77”(被转成了String类型) -
12.CH04 填空:两个Integer对象比较大小,可以使用(comareTo())方法
不够熟悉
- 14.CH04 填空:Java中的多维数组都是由(一维数组组成)。
概念不够熟悉
- 18.CH04 填空: p109 Average.java 求1,2,3,4,5的平均值的命令是(java cc.openhome.Average 1 2 3 4 5)
错误理解题意,误以为是填写程序语句
- 19.CH04 填空:“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。
parseByte方法将string参数解析为有符号的十进制byte。除了第一个字符可以是表示负值的ASCII负号'-' ('\u002D')之外,该字符串中的字符必须都是十进制数字。
- 26.CH05 填空:调用p145 sum函数计算1+2+3+4+5的代码是(MathTool.sum(1,2,3,4,5))
可以直接输入1,2,3,4,5,不需要定义数组。
- 29.CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
课本概念不熟悉
- 30.CH05 填空:Java中方法参数只用(传值)调用。
课本概念不熟悉
- 31.CH05 填空:被声明为(static)的成员,不属于某个对象,而是属于类。
课本概念不熟悉
其他(感悟、思考等,可选)
感觉这周虽然也是学两章,但是学的比上周好一些了,慢慢开始适应这种进度。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/20 | 2/2 | 18/20 | |
第二周 | 156/200 | 2/4 | 20/24 | |
第三周 | 527/600 | 3/7 | 22/30 | |
第四周 | 388/915 | 4/7 | 25/30 |
-
计划学习时间:30小时
-
实际学习时间:25小时
-
改进情况:跟上周学习情况差不多,希望下周能够继续努力,尽量达到目标。
参考资料
- Java学习笔记(第8版)
- 《Java学习笔记(第8版)》学习指导
- [Linux find和grep的区别](http://blog.csdn.net/zhenwenxian/article/details/8459343)