概述
本周进行了JavaSE进阶部分的学习,其中一些常见的错误和误区整理如下。
1.多态的理解
Cat是Animal的子类,当把Cat对象赋给Animal类的变量时,就会出现多态的表现形式。
Animal a = Cat c;
对于这种情况,其实可以按照“容器”和“内容物”来类比。把变量看成是装在数据的“容器”,而相应的对象是包装好数据的“内容物”。
在没有多态之前,容器和内容物是一一匹配的,可以看成是大小刚好,形状也一致的。但在出现继承之后,子类就会从父类继承一部分内容,进而形成自己的独有的内容物。
通常父类的容器要比子类的容器要大,所以子类的内容物放到父类的容器里是没有问题的。如果想要把装在父类容器里的内容物,重新放到和自己大小相称的子类容器中(向下转型),就需要给出特定的指令才可以。
Animal a = Cat c;
Cat c1 = (Cat) a;
按照“容器”和“内容物”来理解多态,能更加形象的知道里面的区别。
2.IO流
IO流当中,涉及到字节流和字符流,并且每个流当中,还有对应的缓冲流,记起来不太容易。
首先要区分,字符流是读写文字的,所以结尾都是Reader和Writer,字节流是读取纯数据的,就是正常的“流”,结尾都是Stream。
其次,缓冲流只是一种优化手段,并不是必须的。相当于在每种流外面,又包裹了一层,所以就需要内外层的结尾要一样(Stream 包裹 Stream, Reader包裹Reader)
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("test.txt"));
至于转换流,就是Stream和Reader同时存在的流,可以实现字符流和字节流的相互转换,方便后续的操作。
所以只要知道他们之间的关系,就不需要死记硬背里面的关键词了。
3.多线程
创造多线程的方式有三种:Thread,Runnable,Callable。
前两种用的比较多,而且理解起来也相对更简单,因为有对应的比喻。Thread可以看成是一条条公路,而Runnable可以看成是跑在上面的车(具体代码)。
如果某个类想要成为多线程,可以继承Thread,然后每创建一个对象,相当于新建了一个公路,每条公路上的代码就能同时运行了。但这有一个弊端,就是代码和公路是绑定的,每条公路只能跑自己的代码。
如果是实现了Runnable接口的类,可以单独定义其中运行的代码,相当于把车和公路分离了。如果想要这辆车在不同的公路上运行,就可以新建一条条空白的公路,然后把车放进去,就可以并行的跑了。
利用公路和车的比喻,可以更好的理解多线程的意义。
最后
以上就是任性热狗为你收集整理的【博学谷学习记录】超强总结,用心分享 | 第3周:Java基础学习中初学者常见错误(3)1.多态的理解2.IO流3.多线程的全部内容,希望文章能够帮你解决【博学谷学习记录】超强总结,用心分享 | 第3周:Java基础学习中初学者常见错误(3)1.多态的理解2.IO流3.多线程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复