黑马程序员技术交流社区

标题: 感言贴 [打印本页]

作者: 黄钱鹏    时间: 2018-10-7 22:55
标题: 感言贴
不知不觉,在黑马学习java已经快两个月了,从基础班的入门,到就业班的基础加强,在高强度的学习中,感觉时间过的飞快,怎么说呢,总结起来这两个月的学习经历,应该可以用充实来形容吧,每天早上7点多爬起来,因为是自己骑车,所以每天从宿舍赶到教室基本都是刚好卡着早读的点到,晚上9点半下课,基本回到宿舍就已经10点了,洗漱洗澡洗衣服之类的,舍友之间轮流使用卫生间基本弄完就是12点了,可能是睡眠不足,每天早上的第一节和第二节课容易打瞌睡,不过总体来说,时间排的还是挺密集的,感觉每天都在学习,没有闲心去玩,所以每天都过得很扎实,挺喜欢这样的学习环境的.
因为在来黑马之间有基础,所以对java基础和基础加强部分的内容都很容易懂,本来觉得自己自学过了,上课的视频也预习过,白天老师上课的话会很无聊,不过实际上,老师上课的时候经常会加入一些自己的理解和学习的窍门,以及有些知识在实际开发中的应用,这些都是自学的时候学不到的内容.而且在上课的时候老师会根据讲课的内容穿插一些老师自己在工作中实际遇到过的难题,并教导我们这些问题的解决方法=.=,比如遇到项目紧急,有些无关紧要的又找不出原因的BUG直接try先应付完事;又比如for循环中条件判断的时候平常我们都会习惯性的使用for(int i=0;i<list.size();i++){}像这种其实是存在内存的性能浪费问题的,像这种细节性的问题,也是我们自学或单纯看视频预习的时候无法学到的知识.
在java基础班的时候,因为课程排的并不是很密集,所以我们基本都是有时间去预习后面的课程,但是到了就业班的时候,课程排的很紧,而且休息时间也没有基础班那么多,所以就存在了一个问题,来不及预习,或者预习会学到很晚,导致第二天的上课学习效率不高,所以老师的建议时,先保证第二天的学习效率,我个人觉得这是就业班和基础班的不一样的地方.基础班的时候有时间预习,所以在上课时即便走神,也并不影响大体的学习进度,但是在就业班,如果没有预习,上课又走神,很容易错过很多细节的知识,而且也会对学习进度的连贯性造成影响.
现在已经上完了就业班的基础加强,并开始了web阶段的学习,最新的知识是web阶段第一天的反射和注解,下面是我学完当天内容的一些对反射的理解:
反射由于操作的是类的字节码对象,因此有着两点好处:第一是打破原本类中内容访问的局限性,主要就是可以访问被 private 修饰的成员变量、成员方法、构造方法。第二是通过配置文件 properties 的方法,降低程序的耦合,从而提升程序的扩展性和维护性.
        反射有着三种不同的方式获取到类的字节码对象,分别对应着Java程序运行的三个阶段分别是源文件阶段,使用 Class.forName(“全类名”) 的方式获取到该类的字节码对象;第二阶段是生成 Class 类对象阶段通过使用 类名.class 的方式,获取到字节码对象;第三阶段是创建对象(运行)阶段,通过使用 对象名.class 的方式,获取到字节码对象.
通过这三种方式获取到字节码对象之后,通过 Constructor对象,Field对象,Method对象就可以获取到类中的构造方法、成员变量、成员方法,进而就可以操作构造方法进行创建对象和初始化成员变量,操作成员变量进行对其进行赋值,操作成员方法进行方法的调用.
        在反射中,有一个很重要的功能就是暴力反射机制,通过调用 setAccessible(true)方法,获取到被私有修饰的成员变量、成员方法、构造方法的访问权限,因此在反射机制下,没有不可以访问的成员变量、成员方法、构造方法.
        反射的中的类加载机制是通过动态加载的方式,也就是在运行期间才对确定加载哪个类,而不是在编译期间就确定加载哪个类,这样在运行期确定加载类之后,然后通过创建字节码对象,反向获取到编译期间就加载的类中的内容,通过字节码对象分别获取到Field对象、Constructor对象、Method对象,通过这些封装的对象,获取到成员变量、构造方法、成员方法.               
反射好处:打破原本类中内容访问的局限性,降低程序的耦合,从而提升程序的扩展和维护.(耦合:类和类/模块和模块之间的关系)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2