20175208 《Java程序设计》第六周学习总结
20175208 《Java程序设计》第六周学习总结
一.教材知识点总结:
第七章
1.内部类: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
2.匿名类:匿名类是不能有名字的类,它们不能被引用,只能在创建时用New语句来声明它们。匿名类的声明是在编译时进行的,实例化在运行时进行,这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。实现他的方式有继承一个类,重写其方法或者实现一个接口,可以是多个。
3.断言:是所谓的assertion,主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出。
语法1:assert expression; //expression代表一个布尔类型的表达式,如果为真,就继续正常运行,如果为假,程序退出
语法2:assert expression1 : expression2; //expression1是一个布尔表达式,expression2是一个基本类型或者Object类型,如果expression1为真,则程序忽略expression2继续运行;如果expression1为假,则运行expression2,然后退出程序。
4.异常类:Java使用try-catch语句处理异常,也可以扩展Exception类定义自己的异常类。
第十章
1.输入流、输出流:提供一条通道,可以用来读取源中的数据,亦或是把数据送到目的地。输入流的指向为源,输出流的指向叫做目的地。
2.缓冲流:
计算机访问外部设备或文件,要比直接访问内存慢的多。如果每次调用read()方法或者writer()方法访问外部的设备或文件,CPU就要花上最多的时间是在等外部设备响应,而不是数据处理。为此,所以会开辟一个内存缓冲区的内存区域,程序每次调用read()方法或writer()方法都是读写在这个缓冲区中。当这个缓冲区被装满后,系统才将这个缓冲区的内容一次集中写到外部设备或读取进来给CPU。使用缓冲区可以有效的提高CPU的使用率,能提高整个计算机系统的效率。在字符流操作中,所有的字符都是在内存中形成的,在字符流输出前都将保存在内存中的缓冲区内。
3.随机流:
随机访问的文件对象看作存储在文件系统中的一个大型 byte 数组,然后通过指向该 byte 数组的光标或索引(即:文件指针 FilePointer)在该数组任意位置读取或写入任意数据
4.数组流:
内存数组流,就是和内存中的数组相关的一个流,可以将字节数组写到输出流中,也可以将字节数组从输入流中读出来,不涉及磁盘。内存数组输出流可以看成一个可自动扩容的 byte 数组,可以往里写字节。
5.数据流:
获取数据的方式有多种,比如:程序中直接给出、键盘输入、从数据文件中读取、从数据库中读取、通过网络读取等。 为了更有效地进行数据的输入/输出操作,Java将各种数据源的数据,抽象为“数据流”,及stream。
6.对象流:
对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息。 使得对象持久化。
(1)ObjectInputStream : 对象输入流
(2)ObjectOutPutStream :对象输出流
二:学习中遇到的困难和解决方法:
1.在src文件夹里创建了文本文件导致的java运行不成功,找不到文本文件。解决方法:在编译文件夹bin里重新创建文本文件才能正常运行编译文件
2.File类很多操作是不是和很多的操作有重复?解决方法:有很多细微的差别。
3.看克隆对象那里产生的疑问:为什么需要克隆对象?直接new一个对象不行吗?解决方法:克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠clone方法了。而如果我们把这个对象的临时属性一个一个的赋值给新new的对象,一来麻烦,二来clone是一个native方法,重点是快,在底层实现。并且通过clone方法赋值的对象跟原来的对象时同时独立存在的。
三:代码截图:
四:本周错题:本周没有错题。
五:学习总结:
我自身的编程基础就不是很好,经过了这段时间的学习,有所改善。第七章学的还可以,第十章就不是很轻松了,在学习中的问题也很多,以后会更加努力学好Java的。