Java零基础如何入门?给初学者的建议,带你快速入门Java

Posted link可

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java零基础如何入门?给初学者的建议,带你快速入门Java相关的知识,希望对你有一定的参考价值。

前言

初衷

在 头条上经常有小伙伴私聊问我 “如何自学 Java”、“想转行 Java 靠谱吗” 等问题,因为接触过很多类似经历的同学,所以很能理解这些同学的痛苦和迷茫。

写这篇文章前,我看了一些网上 Java 自学的文章,很多我都不太满意,有的甚至让我感到愤怒,要么是站在现有的视角侃侃而谈,要么是纯粹的瞎编骗小白。

很多文章都有一个老毛病:完全没有从小白的视角去思考,内容太多,什么微服务、架构、大数据都来了,这根本不是自学阶段该去看的东西,小白看了这些文章,只会越看越懵逼,根本没法下手。

行业现状

程序员现状

由于程序员的薪水比较高,最近几年有很多其他专业的人涌进了程序员行业,加速了这个行业的内卷,但是据某招聘网上的数据统计,程序员当前的需求量还是远高于全行业的平均线的。所以,程序员的现状我觉得是不错的,至少几年内是无需担心的。

Java 现状

最近几年,Go、Python 等语言快速崛起,大有挑战 Java 地位的趋势,但是 Java 毋庸置疑仍是当前互联网行业里招聘需求量最大的。

众多大厂:阿里、美团、快手、拼多多、滴滴、网易等,都是以 Java 为公司的主语言,部分大厂:腾讯、百度、字节等,虽然以其他语言为主语言,但是多多少少也会有一些 Java 岗。

所以,Java 的现状及未来,我觉得都是比较不错的。岗位多也代表着机会多,对于新人来说比较友好,所以我个人是比较推荐新人学 Java 的。

自学前你应该知道:

自学前请做好心理准备,自学是一个既寂寞又漫长的过程,如果想踏进来,请做好放弃几乎所有娱乐生活的准备,包括过年的时候。如果只是抱着三天打鱼两天晒网的态度,那我建议还是放弃吧。

但是如果你能坚持下来,我相信一定能有所回报,我自己就是个例子,我走了那么多弯路,跟着本文走,你们没理由比我当时更差。

自学预估周期

自学的周期我给大家定了一个参考时间:6个月,平均每天6-8小时,共1200个小时左右,大致安排:

1、3个月基础知识学习和强化。

2、2个月 SSM 项目实战反复练习,项目实战同时也在复习和巩固之前的基础知识。

3、1个月面试高频题准备,看面试题其实也会增加自己的专业知识,而且可能比你想象的要多,不夸张的说,前几年我从面试题里学到的知识可能比工作里获得的还多。

自学教程获取

授人以鱼不如授人以渔,一个简单又靠谱的的教程获取方式:B站搜索关键字+教程,例如:Java基础教程、mysql教程、JavaWeb教程、SSM整合教程、Java项目实战等等,然后按“最多点击”排序,在前几个里寻找一个合适的即可,一般点击高的都是质量还可以的。

推荐教程:

很重要的建议

1、爱因斯坦的成功公式:成功 = 效率 * 时间,自学也一样,需要劳逸结合,不要搞的太累,否则效率下降,花再多时间也没用。

2、自学是一个漫长的过程,循序渐进、保持耐心,如果可以,找个伴一起学习,互相鼓励,互相交流,可以让自己更有动力坚持下去。

3、将自己的学习过程记录下来,当你发现累计的越来越多的时候,心里会有一种小成就感,这会提高你学习的动力。

4、专注于重点知识的学习,本文介绍的基本涵盖了当前你应该学习的内容,没有提到的大部分是没那么重要的,如果你无法判断是否重要,可以在本文下面留言,我会一一解答,至于像一些什么:k8s、hadoop、hbase 等等,看都别看,对于当前的你来说只是浪费时间。

5、利用好搜索引擎,有什么问题就百度,新手大部分的问题百度都能解决。

6、看视频不要看书,当前阶段的你看任何书,包括大名鼎鼎的《Java编程思想》都是浪费时间。

7、看视频要跟着敲一遍甚至多遍,如果只看视频不跟着敲,你会发现最后啥都学不会。

8、视频中一些介绍历史的视频可以过一遍简单了解就行,节省点时间。

9、关于视频教程的选取:选择近2~3年的教程,讲师让自己听着舒服即可,点击高的视频水平基本差不多。

10、不懂的知识可以反复看,例如同一个知识点有两套教程,看完第一个没完全理解,可以再看第二个,加深印象,也可以查些资料帮助理解。

Java分为三个体系:

  1. JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  2. JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  3. JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

2006 年,SUN 公司在 JavaOne 大会上,宣布在 GNU 通用公共协议(GPL)的构架下向开源世界贡献 Java 平台,这次开放的 Java 版本包括了其标准版(Standard)、微型版(Micro)以及企业版(Enterprise)。这是一个具有 “历史性意义” 的改变。

Java的主要特性:

  • Java语言是简单的:

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

  • Java语言是面向对象的:

Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

  • Java语言是分布式的:

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • Java语言是健壮的:

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

  • Java语言是安全的:

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

  • Java语言是体系结构中立的:

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

  • Java语言是可移植的:

这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

  • Java语言是解释型的:

如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

  • Java是高性能的:

与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

  • Java语言是多线程的:

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

  • Java语言是动态的:

Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

Java历史

詹姆斯·高斯林(James Gosling) 在他的许多机顶盒项目之一发起的Java语言项目在1991年6月使用。高斯林的办公室放着一棵橡树之后,最初称为橡树(Oak ),也最后被定名为Green,后来被改名为:Java。

Sun 在1995年第一个公开发布 Java1.0。它写一次,随处可运行(WORA),提供无成本的运行时间上流行的平台。

2006年11月13日,Sun 在GNU通用公共许可证(GPL)的条款公布 Java作为自由和开放源码软件。

2007年5月8日,Sun 完成了这个过程,使所有的Java核心代码,免费和开源,除了代码的一小部分,其中Sun并没有拥有版权。

Java开发工具:

Java语言尽量保证系统内存在1G以上,其他工具如下所示:

  1. Linux 系统、Mac OS 系统、Windows 95/98/2000/XP,WIN 7/8系统。
  2. Java JDK 7、8……
  3. Notepad 编辑器或者其他编辑器。
  4. IDE:Eclipse

Java 的版本历史

Java 的主要发行版本及其发行日期如下:

▪ JDK 1.0(1996 年 1 月 23 日)

▪ JDK 1.1(1996 年 2 月 19 日)

▪ J2SE 1.2(1998 年 12 月 8 日)

▪ J2SE 1.3(2000 年 5 月 8 日)

▪ J2SE 1.4(2002 年 2 月 6 日)

▪ J2SE 5.0(2004 年 9 月 30 日)

▪ Java SE 6(2006 年 12 月 11 日)

▪ Java SE 7(2011 年 7 月 28 日)

▪ Java SE 8(2014 年 3 月 18 日)

▪ Java SE 9(2017 年 9 月 21 日)

▪ Java SE 10(2018 年 3 月 20 日)

▪ Java SE 11(2018 年 9 月 25 日)

▪ Java SE 12(2019 年 3 月 19 日)

▪ Java SE 13(2019 年 9 月 17 日)

▪ Java SE 14(2020 年 3 月 17 日)

为什么Java应用最广泛?

从互联网到企业平台,Java是应用最广泛的编程语言,原因在于:

⒈ Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行;

⒉ Java程序易于编写,而且有内置垃圾收集,不必考虑内存管理;

⒊ Java虚拟机拥有工业级的稳定性和高度优化的性能,且经过了长时期的考验;

⒋ Java拥有最广泛的开源社区支持,各种高质量组件随时可用。

Java语言常年霸占着三大市场:

⒈ 互联网和企业应用,这是Java EE的长期优势和市场地位;

⒉ 大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(一种运行于JVM的编程语言)开发的;

android移动平台。

这意味着Java拥有最广泛的就业市场。

自学知识点

1、Java SE

1.1、Java基础

  • 基础概念/语法:

面向对象(继承、封装、多态)基础、包、类、接口、方法、对象、属性、第一个 Java 程序。

  • 数据类型:

1)基本数据类型8种:byte、short、int、long、float、double、char、boolean;

2)引用数据类型

变量类型:局部变量、实例变量(成员变量)、类变量(静态变量)

修饰符:public、private、不写、protected、static、final、abstract、synchronized ,volatile

  • 运算符:

1)算术运算符:+、-、*、/、%、++、--;

2)关系运算符:==、!=、>、<、>=、<=;

3)逻辑运算符:&&、||、!;

4)赋值运算符:=、+=、-=、*=、/=;

5)条件运算符:Object x = (expression) ? value if true : value if false;

  • 循环结构:for 循环、while 循环、do...while 循环
  • 条件语句:if...else、if...else if...else
  • 异常处理:try...catch...finally、throws、throw
  • 字符串:String、StringBuilder、StringBuffer
  • 其他:switch case、数组、日期时间、枚举、使用 IDE 进行 DEBUG

1.2、集合

  • Map:HashMap(最重要)、ConcurrentHashMap、TreeMap、Hashtable
  • List:ArrayList(最重要)、LinkedList
  • Set:HashSet(最重要)、TreeSet

1.3、多线程

线程生命周期

创建线程的三种方式:继承 Thread、实现 Runnable;实现 Callable

ThreadPoolExecutor(线程池)

锁:synchronized 和 Lock

1.4、I/O流

1.5、网络编程

1.6、反射

1.7、泛型

1.8、注解

小结:

1、该阶段很重要,建议至少看两套不同的教程。由于每个老师的观点都会有一些片面性,当遇到疑惑的时候,可以看看其他老师的理解,可能就想通了。

2、看第一遍时会比较慢,第二遍会快一点,已经掌握的知识可以快速带过。

3、有疑问的知识多看几遍,也可以网上看点博文辅助理解,实在看不懂的可以先记下来,后面学到一定程度可能就理解了。

4、对于重点知识,可以做笔记来加深自己的理解,也方便后续自己复习。

5、Java基础、集合、多线程是核心中的核心。

目标:熟练掌握该章节所列的所有 Java 核心基础知识,能熟练的编写 Java 程序。

配套教程:

以上是关于Java零基础如何入门?给初学者的建议,带你快速入门Java的主要内容,如果未能解决你的问题,请参考以下文章

零基础带你快速入门如何通过eclipse导入web项目及Tomcat项目部署 | 全网独家,墙裂建议收藏

没有基础的初学者学java怎样快速入门?超全的学习路线图

java学习零基础

Java学习路线图(如何快速学Java)

零基础带你快速入门Ribbon技术(浅显易懂小白都能看懂)

深度学习入门有多难?这篇带你零基础入行