如何零基础学习Java编程?
“PHP是世界上自己好的语言”
——by Coder
经常有人问我,零基础应该学习哪门语言,C/C++、Java、Pathon还是其他的什么,今天我们就来聊聊这个话题。
大家可以先看看这篇文章,了解一下我的履历,这样文章更可信:
https://mp.weixin.qq.com/s/wIfb8va8YCMnsu6bmGIwpg
老规矩先说结论:首推Java
1. 对于一个想入门的新人来说,最重要的是先入门、上手,然后找到工作糊口。马斯洛需求层次理论告诉我们,首选要解决的就是生理需求,同学们别想歪了,这里主要指的是衣食住行。这几门语言里面,无疑Java是最好找工作的,国内很多公司都使用Java,也就是可以通过学习Java进入这个行业,然后活下来,才有机会去学习进一步的理论。
2. Java相比C/C++要容易学习,国内有阿里这样的大厂,也有相对丰富的生态。所以当有人问,他不是科班出身的时候,我就告诉他,不要怕。因为我始终觉得,只要肯努力,这里面并没有什么无法逾越的鸿沟,况且还有这么多的资料,这么丰富的生态。
学习任何一门语言,不要好高骛远,也不要急于求成。学习编程和其他学习都一样,也是一个积累的过程,在任何一个行业,一份耕耘、一份收获,只要有心人,铁杵磨成针,持续耕耘总有一天会成为你心目中的大牛。
看到这里,我们应该如何学习、入门呢?
1. 开发环境:搭建Java的开发环境,学会安装JDK,建议搞清楚Java是如何进行命令行编译的,要知道path和classpath用来干嘛,然后再使用IDE进行开发。知其然也知其所以然。
2. 基础语法:掌握基本语法:包括操作符、运算符、循环、条件判断,和基本等字符串、数组等处理。然后学习面向对象基本概念:接口、类、继承、抽象和封装;掌握多态,overwrite等。
3. 数据结构:掌握最基本的数据结构,包括 LinkedList和 ArrayList的实现机制,Map/HashMap/Set等基本容器等使用;掌握基本的栈/队列/二叉树等。了解这些数据结构等基本实现原理,算法复杂度等。
4. 多线程:掌握线程的基本概念,知道ConcurrencyHashMap等线程安全的容器的基本原理,知道线程同步、死锁、synchronized、Runnable接口等。
5. 磁盘/网络IO:掌握基本等数据读取,网络编程,这一步知道原理之后就是熟能生巧,包括InputStream/OutPutStream/Socket/Http等。
6. 数据库:这一步知道JDBC的概念,掌握其核心的步骤和API。掌握基础之后需要知道数据库事物,连接数据库使用的连接池,以及为什么要使用连接池。
以上掌握得八九不离十了,你就可以去找工作了,工作中常见的都再上面了。但是如何到中级呢?
1. 设计模式:我们不能只做API BOY,在工作中会实现各种需求,在这个时候带着业务去实践设计模式,推荐一些书,比如《大话设计模式》《Java与模式》,看完你会知道委托、工厂模式等等一系列的概念。
2. 数据结构与算法进阶:知道基本数据结构的实现,可以自己动手写;实践排序的各种算法和实现,包括时间复杂度;实践二叉树的实现,知道其各种遍历方式,实践动态规划算法、贪心算法、最短路径等常见算法。如果这一步学得好,那么恭喜你,可以面对国内大部分公司的面试了。
可以说从基础到进阶,和专业到计算机毕业到已经相差无几了,如果掌握90%以上,甚至科班都不如你。这个时候你可以考虑跳槽了,薪水涨涨涨!
但是这个不是我们终极都梦想,我们需要跨过中年危机,如何更高阶呢?
1. 思考:工作这么多年,其实发现人与人最大到不同,在于有些人很早就学会独立思考,有些人不会。会独立思考到人早早就规划好了自己的职业生涯,知道自己需要什么,在什么阶段做什么事情,这样差距就一步一步的拉开了。
同样的,对于编程Java发展到现在,被用在各种各样的情景之中,可以做后台服务端开发,可以做客户端开发,毫无为过的说它是应用最广泛的编程语言。有了上面的基础之后,还可以深入研究一下JVM的源代码,以及其实现机制,垃圾回收算法等等。
也可以考虑自己要不要专攻一个方向,我们的教程会以服务端的开发为蓝本,可以从Spring入手,搞清楚反射,控制反转,依赖注射,切片编程等,这些让人望而生畏的概念,入门之后就要想,为什么会有这些东西,自己能不能设计并实现。在工作中与大多数优秀的程序员交流的时候,其实大家聊到这些,让他从零开始,也会设计得八九不离十。
2. 架构:这个时候,我们就算是高阶开发程序员了,要思考更多的东西,同时负担的工作也会更重要了。比如负责设计一个服务的架构,需要思考高并发、分布式,如何提供更健壮稳定搞笑的后台服务。到了这一步,一些常见的后台架构也会有常见的模式,但是不同的业务决定了不同的情况,这个时候,需要我们深入思考,一般没有什么捷径,需要靠自己的悟性、对业务敏感性。
这个时候我们就算一个有些修为的高阶IT狗了,年薪30W不是梦想,甚至更高。
程序员的编程世界是简单的,永远都是有付出就会有收获。这里也是一个平等自由国度,只要学习就会有进步。
这里有学习的乐趣,也有征服的快感
愿你Enjoy!
可以添加博主vx交流:crazy042438
小伙伴们,要不也给一个赞吧。