20165233 Java第七、十章学习总结
20165233 2017-2018-2 《Java程序设计》第五周学习总结
教材学习内容总结
ch07
-
内部类:Java支持在一个类中声明另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类。
-
匿名类
-
和某类有关的匿名类就是该类的一个子类,该子类没有明显地用类声明来定义,所以称为匿名类。
-
和某接口有关的匿名类就是实现该接口的一个类,给子类没有明显地用类声明来定义,所以称为匿名类。
-
-
异常类
- Java方法调用时可能出现异常,利用
try-catch
语句来处理。
- Java方法调用时可能出现异常,利用
-
断言:
assert
关键字
ch10
-
InputStream的子类创建的对象为字节输入流,每次调取方法按顺序读取源中内容,直到末尾或流被关闭。
-
OutputStream的子类创建的对象为字节输出流,同样是按顺序写入。
-
Reader的子类创建的对象为字符输入流,同样按顺序读入。
-
Write的子类创建的对象为字符输出流,同理。
-
File类
-
文件字节输入、输出流
-
文件字符输入、输出流
-
缓冲流、随机流、数组流、数据流、对象流
-
序列化与对象克隆
-
使用Scanner解析文件
-
文件锁
教材学习中的问题和解决过程
- 问题1:
throw
与throws
的区别是什么? - 问题1解决方案:
throw
这个关键字的作用是抛出异常;throws
是方法可能抛出异常的声明。总的来说,一个方法在声明时可以使用throws
关键字声明要产生的若干个异常,再用相应的异常类创建对象,并使用throw
关键字抛出该异常对象。 - 问题2:序列化是什么?
- 问题2解决方案:序列化是Java中一种特殊的文本表示,序列化就是和Serializable接口相关的东西。序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
代码调试中的问题和解决过程
- 问题1:教材293页中的Example10_8.java的例子,
import java.io.**;
中**
的作用是什么?为什么使用**
时,编译就会报错,写成*
时,就能够正常编译、运行呢?
- 问题1解决方案:这个问题暂时没有解决,没有找到原因,并且每次使用
*
都可以正常运行。 - 问题2:教材284页中的Example10_3.java,Mac中找不到文本编辑器(Mac的记事本)的路径与可执行文件?
- 问题2解决方案:在网上寻找过,但也都没有此问题的解答。
代码托管
上周考试错题总结
- 错题1:下列关于构造方法叙述正确的是:D.带有返回值的方法一定不是构造方法。
原因:本题为多选题,漏选该选项,对于构造方法的判断条件掌握不全面。
理解情况:构造方法没有类型,没有返回值,且名字与它所在的类的名字完全相同。
- 错题2:下列关于实例变量和类变量的说法错误的是:B.分配给不同对象的类变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。
原因:对于实例变量与类变量的一些细节知识点掌握不熟练。
理解情况:这是对“实例变量”的描述,而非“类变量”。错选为C.创建类的对象时,类变量不再重新分配内存。
- 错题3:以下对重载描述错误的是B.构造方法不能重载。
原因:对该知识点不太清楚。
理解情况:已掌握。
- 错题4:下列代码的执行结果均为true.
int i = 128;
Integer i2 = 128;
Integer i3 = new Integer(128);
System.out.println(i==i2);
System.out.println(i==i3);
原因:未掌握Integer
的类型。
理解情况:Integer
类型的对象包含一个int类型的字段,Integer
会自动拆箱为int,因此值相等。
其他(感悟、思考等,可选)
本周学习内容中间跨度有些大,越过8、9章,学习第10章时,发现有没有学到过的知识点。第7章听课的时候没有那么难理解了,但是要注意到细节的地方特别多,在看程序题的时候还是有些费劲。第10章在流的这部分内容相近,也较好掌握,但是感觉文件锁等知识点难度增大了。