2020年4月15日这一天
刘小爱同学开始了Java的自学之旅
从此走向了一条不归路
都说万事开头难,Java的开头还是蛮简单的。
不仅简单,还挺有趣的:
带着这些问题,很开心地学完了前几天的知识点。
接着就是Java虚拟机,JDK的配置以及第一个程序的编写。
从此之后,我也是写过程序的人了。
大概HelloWorld是每一个程序员接触到的第一个程序吧。
仿佛感觉程序一下子有了生命,在和世界问好:
常量、变量、数据类型、运算符和流程控制语句。
一个多星期的学习,简单呀,说白了不就是一些数学知识么?
难怪说学编程需要具备一定的数学基础呢,英语反而还是次要的了,毕竟有各种翻译软件。
正当我对后面的学习充满憧憬时,数组出现了…
咦,怎么和数学里的数组不一样?
咦,怎么别的变量控制台输出都是值,你输出的是一串看不懂的字符?
哦,原来这个是引用的地址值,数组是一个引用数据类型。
行吧,你说是地址就地址吧,我也不太懂,我也不敢问。
好在问题不算大,大不了死记硬背背下来。
然而紧接着的面向对象将我吓了一跳。
什么?面向对象编程?不会吧,没有对象连Java都不能学么?
都说程序员群体里鄙视链很严重,可问题是我这不是才刚开始学么……
经过一天的学习才发现:哦,原来此对象非彼对象。
在Java里面一切万物都可以成为类,而对象就是类的实例化。
也就是说我岂不是可以new无数个对象?
以后520情人节什么终于不用担心没对象了……
对象输出的时候,我擦,竟然又是一串字符,和数组很相似。
看来这次不能再敷衍了,得将引用数据类型弄明白。
引用数据类型,这个引用,到底什么叫引用啊?
哦,原来引用是这么个意思,就好比是一个快捷方式。
地址本身并没有内容,有内容的是地址指向的对象。
哎哟,原来如此,嘛,我也不知道这样说明对不对,反正这么一想后,确实好理解些了。
学到这儿虽然磕磕碰碰,好在有惊无险,问题不大。
再加上学了几个很好玩的API:
以上种种的接触,也算是没有磨灭我学习Java的激情,
面向对象三大特性:封装、继承以及多态。
我很长一段时间对封装的概念一直都是很模糊的,说不出它具体有什么作用,不就一个private关键字么?
使类更加地安全,那是个什么样的安全法呢?懵懵懂懂…
正当我还在纠结封装到底有何用时,继承来了。
父类可以有很多子类,但子类只能有一个父类。
一句话总结就是:父亲可以有很多儿子,但儿子只能有一个亲爹。
有趣有趣,而接下来接口的学习让其更加地有趣了起来:
儿子只能有一个亲爹,但是可以有多个干爹,所以可以实现多个接口。
接口中的抽象方法就好比一个作文题目:
这写作文的过程不就相当于是实现接口重写方法的过程么?
接下来就是多态,什么叫多态?
一种行为多种形态。同样是吃,猫吃鱼狗吃肉奥特曼吃小怪兽,这还不好理解,简单呀。
很长一段时间我也是这么觉得的,直到我学了函数式编程,才发现自己想的太简单了。
不管我情不情愿,我还是迎来了学Java的一道大坎:匿名内部类。
本来类里面再放一个类就感觉有点懵,现在还是匿名内部类,没有名字看得更加的一脸懵逼了。
内部类,累不累?
嘛,没办法,还是得继续学,毕竟是自己的选择,爬都要给我爬下去。
好在,接下来两天的学习还算简单,算是找回了一丝信心。
接着就是集合了,这都还好说,毕竟前面学过ArrayList这个集合。
但是数据结构真的是学的我一个头两个大。
堆栈、队列、数组、甚至是链表都还好说,这个树结构光看着都头痛,主要是太多了:
什么2-3-4树、B-树、B+树、B*树、Trie树(字典树) ……就连最常见的红黑树都没弄太明白。
行吧行吧,反正这个对写代码影响不算大,不懂就不懂吧。
再往后就是异常和多线程了:
遇到异常怎么办?死了都要try,不抓住异常不痛快。
原来我们常说的BUG就是这个异常?
多线程,每次看到线程我就会莫名地想起“平行世界”。
本来我同一时间只能做一件事,现在多一个平行世界我就能同时做两件事,那我多个几十万个岂不是无敌?
Java里的多线程准确上来说是伪线程,硬件配置才是真线程。
所以理论上Java线程是可以创建很多很多个的,但是多了程序会崩,而如何保证程序不崩就需要不停地优化了。
IO流,用来传输文件的存在,难倒是不难,就是流太多太多了有点记不住。
后来我痛定思痛,终于领悟了一招IO流的终极绝学“万流归宗”,才算勉强过关。
有人说:你现在所欠下的,将来都得换回来。
以前我对这句话是嗤之以鼻的,但是自从开始学函数式编程时,我相信这句话了。
第一次看到lambda表达式,仿佛跟天书一般的存在,本来匿名内部类就是因为省略了类名搞不清楚。
现在lambda表达式不仅类名没有,连方法名都没有了…
也就是说要看懂lambda表示式得对接口中的抽象方法了如指掌。
同时对匿名内部类也要很熟悉。
等我以为这已经是最难懂了的时候,方法引用又出来了。
现在不仅方法名省了,连方法参数、方法体都省了。
天啦,这啥都没有,我怎么知道表示的是啥……
正当我以为方法引用是最抽象的时候,反射又出来了。
你说好好的创建对象不好么?
好好地调用方法不好么?
好好地设置属性获取属性不香么?
反射偏不,它偏要反着来:
它偏要用方法调用对象;
它偏要用属性自己给自己设置属性;
没看过射雕英雄传里面欧阳锋就是反着练九阴真经所以走火入魔了么?
更可气的是反射它还就是牛逼,一般应用于框架。
更巧的是欧阳锋虽然走火入魔了也反而更厉害了。
莫非金庸老先生也是程序员?
还是说什么这世间很多事情反着来就会很牛逼?
动态代理:
也就是这天,我感受到了被动态代理所支配的恐惧……
这……这也太难理解了吧?
天啦,求求老天爷派个小仙女下来救救孩子吧。
老天爷听到后冷冷地一笑:你以为这就完了?
还有八大经典排序算法和23种设计模式呢。
我:……
我只是在和欧阳锋一样,在练一门绝世神功,待吾神功练成,必将君临天下!
零基础自学Java,从入门到入土……
最后
谢谢你的观看。
就是这天,我感受到了被动态代理所支配的恐惧……