首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自学Java56天,从入门到入土…

2020年4月15日这一天

刘小爱同学开始了Java的自学之旅

从此走向了一条不归路

01

都说万事开头难,Java的开头还是蛮简单的。

不仅简单,还挺有趣的:

什么情况下1+1=10?

为什么64G的手机,实际存储空间不到64G?

为什么100M的宽带就是达不到100M/秒?

如何让电脑自动开关机?

苹果与微软的冲突以及Windows的由来轶事?

带着这些问题,很开心地学完了前几天的知识点。

接着就是Java的介绍以及第一个程序的编写。

从此之后,我也是写过程序的人了。

大概HelloWorld是每一个程序员接触到的第一个程序吧。

仿佛感觉程序一下子有了生命,在和世界问好:

02

无论是常量、变量以及数据类型的介绍;还是运算符和流程控制语句的接触。

一个多星期的学习下来,感觉还是蛮简单的。说白了不就是一些数学知识么?

难怪说学编程需要具备一定的数学基础呢,英语反而还是次要的了,毕竟有各种翻译软件。

正当我对后面的学习充满憧憬时,数组出现了…

咦,怎么和数学里的数组不一样?

咦,怎么别的变量控制台输出都是值,你输出的是一串看不懂的字符?

哦,原来这个是引用的地址值,数组是引用数据类型。

行吧,你说是地址就地址吧,我也不太懂,我也不敢问。

好在问题不算大,大不了死记硬背背下来。

然而紧接着的面向对象将我吓了一跳。

03

什么?面向对象编程?不会吧……没有对象连Java都不能学么?

都说程序员群体里鄙视链很严重可问题是我这不是才刚开始学么……

经过一天的学习才发现:哦,原来此对象非彼对象。

在Java里面一切万物都是类,而对象就是类的实例化。

也就是说我岂不是可以new无数个对象?

以后520情人节什么终于不用担心没对象了……

对象输出的时候,我擦,又是一串字符,和数组很相似。

看来这次不能再敷衍了,得将引用数据类型弄明白。

引用数据类型,这个引用,到底什么叫引用啊?

哦,原来引用是这么个意思,就好比是一个快捷方式。

地址本身并没有内容,有内容的是地址指向的对象。

哎哟,原来如此,嘛,我也不知道这样说明对不对,反正这么一想后,确实好理解些了。

04

学到这儿虽然磕磕碰碰,好在有惊无险,问题不大。

再加上学了几个很好玩的API:

如何获取一个随机数?

如何在控制台上输入数字并输出?

如何求绝对值?如何四舍五入?如何向上取整?如何向下取整?

字符串String类,这个类在Java里大概就和现实中吃饭一样常见…

Java里最常见的容器?

以上种种的接触,也算是没有磨灭我学习Java的激情,

05

面向对象三大特性:封装、继承以及多态。

我很长一段时间对封装的概念一直都是很模糊的,说不出它具体有什么作用,不就一个private关键字么?

使类更加地安全,那是个什么样的安全法呢?懵懵懂懂…

正当我还在纠结封装到底有何用时,继承来了。

父类可以有很多子类,但子类只能有一个父类。

就好比:父亲可以有很多儿子,但儿子只能有一个亲爹。

有趣有趣,而接下来接口的学习让其更加地有趣了起来:

儿子只能有一个亲爹,但是可以有多个干爹。所以一个类可以实现多个接口。

接口中的抽象方法就好比一个作文题目:

写作文的过程不就相当于实现接口重写方法的过程么?

谁说学编程挺枯燥乏味的?这不是挺有趣的嘛?

接下来就是多态,什么叫多态?

一种行为多种形态。同样是吃,猫吃鱼狗吃肉奥特曼吃小怪兽,这还不好理解,简单呀。

很长一段时间我也是这么觉得的,直到我学了函数式编程,才发现自己想的太简单了。

06

不管我情不情愿,我还是迎来了学Java的一道大坎:匿名内部类。

本来类里面再放一个类就感觉有点懵,现在还是匿名内部类,没有名字看得更加的一脸懵逼了。

内部类,累不累?

嘛,没办法,还是得继续学,毕竟是自己的选择,爬都要给我爬下去。

好在接下来两天学习还算简单,算是找回了一点信心。

Java里的亚当与夏娃?

如何获取计算机的系统时间?

算一算自己活了多少天,多少小时?

接着就是集合了,这都还好说。毕竟前面学过ArrayList这个集合。

但是数据结构真的是学的我一个头两个大。

堆栈、队列、数组、甚至是链表都还好说,这个树结构光看着都头痛,主要是太多了:

什么2-3-4树、B-树、B+树、B*树、Trie树(字典树) ……就连最常见的红黑树都没弄太明白。

行吧,反正这个对写代码影响不算大,不懂就不懂吧。

07

再往后就是异常和多线程了:

遇到异常怎么办?死了都要try,不抓住异常不痛快。

原来我们常说的BUG就是这个异常?看来写代码的过程就是不断地和异常做斗争……

多线程,每次看到线程我就会莫名地想起“平行世界”。

本来我同一时间只能做一件事,现在多一个平行世界我就能同时做两件事,那我多个几十万个岂不是无敌?

Java的多线程准确来说是伪线程,硬件配置才是真线程。

所以理论上Java线程是可以创建很多很多个的,但是多了程序会崩,而如何保证程序不崩就需要不停地优化了。

IO流,用来传输文件的存在,难倒是不算太难,就是流太多太多了有点记不住。

后来我痛定思痛,终于领悟了一招IO流的终极绝学“万流归宗”,才算勉强过关。

08

有人说:你现在所欠下的,将来都得换回来。

以前我对这句话是嗤之以鼻的,但是自从开始学函数式编程时,我相信这句话了。

第一次看到lambda表达式,仿佛跟天书一般的存在,本来匿名内部类就是因为省略了类名搞不清楚。

现在lambda表达式不仅类名没有,连方法名都没有了…

也就是说要看懂lambda表示式得对接口中的抽象方法了如指掌,同时对匿名内部类也要很熟悉。

等我以为这已经是最难懂了的时候,方法引用又出来了。

现在不仅方法名省了,连方法参数、方法体都省了。

天啦,这啥都没有,我怎么知道表示的是啥……

正当我以为方法引用是最抽象的时候,反射又出来了。

你说好好的创建对象不好么?

好好地调用方法不好么?

好好地设置属性获取属性不香么?

反射偏不,它偏要反着来:

它偏要用方法调用对象;

它偏要用属性自己给自己设置属性;

没看过射雕英雄传么?欧阳锋就是反着练九阴真经所以走火入魔了的?

更可气的是反射它还就是牛逼,一般应用于框架。

更巧的是欧阳锋虽然走火入魔了也反而更厉害了。

莫非金庸老先生也是程序员?

还是说什么这世间很多事情反着来就会很牛逼?

09

动态代理,无疑是JavaSE里最难的存在。也就是这天,我感受到了被动态代理所支配的恐惧……

这……这也太难理解了吧?看了一天根本就是一脸懵逼。

天啦,求求老天爷派个小仙女下来救救孩子吧。

老天爷听到后对我冷冷地一笑:

你以为这就完了?

还有八大经典排序算法和23种设计模式呢。

我:……

如果有一天你发现我不再更新了,不用怀疑。

我只是在和欧阳锋一样,在练一门绝世神功,待吾神功练成,必将君临天下!

零基础自学Java,从入门到入土……

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200609A0P06D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券