经过第二个月的基础加强版学习,我收获很多,很高兴跟大家分享一下.第一我觉得要勤思考,要”悟”,要把上课讲的知识变成自己的东西比如流那一块的知识,讲的顺序是字节流->字符流->缓冲流->转换流,要命的是还分成了两天讲,如果知识老老实实的被动的接受知识,甚至还割裂来学的话,学晕是肯定的.所以学的时候,一定要综合起来看,我把它们分成Stream,Reader/Writer,Buffered.Stream就是基本的流,Reader/Writer就是在基本流的基础上加了一个字符集缓冲区,负责把字节和字符的互相转换,其中File Reader和File Writer只不过是Inputstream和OutputStream的子类,它们只负责new一个相应的对象传给父类,相当于一个传话员,只是为了方便的便捷类,如果按照视频上字符流的来记,一方面加重记忆负担,另一方面容易混乱,还不容易看清本质.Buffered***就是在流的基础上加了一个8KB的缓冲区,也就是一个数组,可以给字符流加缓冲区,可以给字节流加缓冲区,相应的就是四个转换流.所以经过思考,所谓转换流和缓冲流,只不过是给基本的字节流添加缓冲区罢了,Reader和Writer加的是字符集缓冲区,Buffered加的是数组缓冲区,这样一”悟”,不光是不用记了,思路也异常清晰,代码敲的时候也能信手拈来.
第二一定要总结
有句话叫先把书读厚,再把书读薄,读厚的过程,就是把需要涉及的知识点都要涉及到,读薄的过程,就是把知识归类,总结到一起,把最重点的东西突出出来,复习的时候,只需要把最重点的东西过一下,有些人复习时地毯式的,复习起来跟第一次学没什么区别,课程内容不多,时间不紧张的时候,或许还可以学得过来,长此下去,随着难度加大内容加多,消化肯定赶不上进度,到时候就会学糊,论堆.总结好了,以后遇到忘记的知识点,回头查一下当时的总结,三两句话就搞懂了.
第三要清楚当下的主要任务
学习的过程中,肯定会遇到一些比较难懂的知识,有些知识是需要清楚原理的,可能关系到对一整个知识点的理解,而很多时候是不需要刨根问底的,一种情况是清不清楚它的原理对我们的学习没有任何影响,另一种情况是人家就是这么规定的,就像语法一样,还有一种情况,毕竟我们是半路出家学Java,肯定要侧重于实战技术,如果遇到所有问题都去探究,尤其是涉及底层的一些代码,那工作量可就大了,不用说六个月,两年都不一定学成,所以要分清现阶段应该干什么,不要把精力浪费在一些没必要的地方.当然,适当探究一下原理有助于理解和记忆,在学习任务不重的前提下,我觉得探究一下源码对理解帮助还是蛮大的,特别是有些写的不那么晦涩难懂的源码,当然目前来说,大部分源码我们还吃不消,不要因小失大,跟好老师的进度是第一位的,源码最好是学有余力再考虑.
第四要抓本质
学习的最高目标,是学到本质,万变不离其宗宗嘛,把宗学好,其他东西可以引申.就比如java,java就是面向对象,面向对象,就是把方法封装,用的时候,用对象去调用.除了静态方法,想调用任何方法,都要通过创建方法所在类的对象,通过对象来调用,这就是本质,基础班学完的时候,好多同学对这些本质的东西不清楚,写代码总是乱,没思路,没逻辑,写出来的对象不知道是对象,不知道对象创建出来干嘛,乱”点”.又比如多态,对于成员方法和成员变量的重名问题,视频搞了个口诀,成员方法是编译看左运行看右,成员变量是编译看左运行看左,有些同学就背了,背完就彻底晕了,这就是不抓本质.其实成员方法所谓编译看左运行看右,是因为new 了一个子类对象用父类来接收,这个对象就成为了父类的对象,父类的对象只能调用父类的方法,编译器就看你父类里有没有重名的那个方法,如果没有,那就是子类独有的方法,父类不能调用子类的独有的方法,所以编译器会报错,父类想调用子类的方法,必须要向下转型.所谓运行看右,就是看子类有没有重写父类的方法,因为父类的对象嘛,本来是要调用父类的方法,但实际应用中,如果是重写了父类的非抽象方法,当然是想拿来用,不然可以不重写,如果是重写了父类的抽象方法,抽象方法咋调用?所以运行时,会优先运行重写的方法,子类没有重写方法,那就还是调用父类的方法,至于重名的成员变量,由于变量不涉及重写的问题,父类的对象就是只有去调父类的成员方法了,所以左右之分,就在于重写的问题上,如果没有重写的问题,那就都是看左,也就回归到了那句话,谁的对象调用谁的方法. |
|