当前位置: 首页 新闻详细

Java要怎么自学?小白想学Java开发,不知道怎么学?这篇文章帮你梳理学习路线

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V:1599997-8052 ,欢迎咨询小白想学java怎么学,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、Java要怎么自学?

  一直关注我的朋友们应该都知道,很早之前我就打算开始写Java相关的文章了,一直没想好要从什么阶段入手。因为太简单的大家都会,太难的可能自己还没学会。人生总是这样,矛盾与纠结一直缠绕在身。想着纠结来纠结去也没有什么用,不如就从零开始吧。重走一遍自学之路,给零基础的小伙伴一点方向、给已经工作的各位大牛复习下基础!

  

  下面开始今天的知识!

  

  一、计算机基础知识(Java日常编程相关)

  

  1、键盘快捷键介绍(万能快捷键,在任何IDE编写代码都通用)

  

  Ctrl+A全选

  

  Ctrl+C复制

  

  Ctrl+V粘贴

  

  Ctrl+X剪切

  

  Ctrl+Z撤销

  

  Ctrl+S保存

  

  2、常用DOS命令

  

  二、Java语言概述

  

  1、Java语言发展史

  

  2、Java语言平台版本

  

  3、Java语言特点

  

  简单性解释性

  

  面向对象高性能

  

  分布式处理多线程

  

  健壮性动态

  

  结构中立安全性

  

  跨平台(重要)

  

  什么是跨平台性?

  

  通过Java语言编写的应用程序在不同的系统平台上都可以运行

  

  原理是什么?

  

  只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(JVMJavaVirtualMachine)即可。由JVM来负责Java程序在该系统中的运行

  

  三、JDK相关下载、安装

  

  JRE(JavaRuntimeEnvironmentJava运行环境)

  

  包括Java虚拟机(JVMJavaVirtualMachine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可

  

  JDK(JavaDevelopmentKitJava开发工具包)

  

  JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe)打包工具(jar.exe)等

  

  简单而言:使用JDK开发完成的java程序,交给JRE去运行

  

  JDK下载(Google/百度「JavaJDK下载」)

  

  JDK安装(傻瓜式安装,下一步即可,安装路径不要有中文或者特殊符号如空格)

  

  四、环境变量的配置

  

  path环境变量配置的作用

  

  程序的执行需要使用外部指令javac,但是javac指令仅仅能在JDK安装目录下的bin目录下时候,因此程序只能写入bin目录

  

  程序开发过程中,不能将源代码写入JDK的安装目录,因此需要将源程序保存到任意位置的指定目录(英文目录),所以需要使javac指令在任意目录下可以运行

  

  path环境变量配置、classpath环境变量配置(Java1.5版本之后可不需要设置classpath)

  

  path/classpath环境变量的配置请Google/百度「Java环境变量配置」,按照搜索出的第一条结果配置即可

  

  path和classpath的区别

  

  path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找

  

  classpath环境变量里记录的是Java类的运行文件所在的目录

  

  五、HelloWorld

  

  开发工具介绍

  

  Eclipse(最多人用,建议零基础用Eclipse,教程大多用这款工具,出错了容易解决)

  

  MyEclipse

  

  STS(SpringToolSuite)

  

  IntelliJIDEA(趋势,建议有开发基础的直接上手这款)

  

  HelloWorld

  

  首先定义一个类class类名

  

  在类定义后加上一对大括号{}

  

  在大括号中间添加一个主(main)方法/函数publicstaticvoidmain(String[]args){}

  

  在主方法的大括号中间添加一行输出语句System.out.println(“helloworld”);

  

  六、写在最后,过来人的建议

  

  1、现在编程资料太多,只要找一份靠谱的学习视频就够了,不用收集那么多,根本看不过来。

  

  2、刚开始配置Java环境的时候,建议对照着学习视频进行配置,看书配置容易出错。

  

  3、视频和书结合结合着学习,可以先跟着视频学习,然后再过一遍书,加深理解。不能光看视频学习,也不能光看书。

  

  4、不要钻牛角尖,有很多编程问题,你现在想不明白,没关系!接着往下学,学到后面就会明白前面想不通的地方了。

  

  5、一定要多敲代码,重要的事情说三遍:多敲、多敲、多敲。

  

二、零基础小白如何快速入行JAVA?

很多JAVA编程初学者在刚接触JAVA语言程序的时候,不知道该从何下手,也不知道该学习掌握哪些必要的知识点,接下来小青老师总结了零基础学习JAVA编程的五个步骤,希望能够帮助到新入门的小伙伴!

1、学习Java编程语言基础

无论学习哪一门语言,掌握语言基础都是我们需要做的第一步,如果不将概念的东西搞清楚,那么之后你可能连自己是否做错了都不知道

2、编写小程序

当你对大多数的基础知识和概念都足够熟悉,并能够将它们联系起来之后,就可以开始进行下一步的尝试了,开始尝试编写一些非常基本的JAVA程序,虽然前几个可能困难系数比较大,但是只要完成前几个后面就显得容易的多了。 

3、使用JavaAPI编写高级程序

当完成了基础程序编写后,掌握了一定的编程技巧的我们就可以进行下一步了。建议努力学习Java集合和JavaIO内部的API。

熟悉API提供的各种类和接口,用它们来创建程序。应该查找已经存在的API和方法来实现功能,而不是自己实现这些逻辑,熟悉这些API,在这些已有的API中寻求解决方案。 

4、编写桌面程序和Web应用

当你成功编写高级程序后,可以尝试着编写一个Java桌面或者GUI应用程序,如计算器,然后再编写一个Web应用程序,比如管理程序。

 当最终完成这两个练习时,你的编程经验就又上了一个档次,并且可以帮助你培养持之以恒的好习惯

5、多逛逛Java博客与论坛

提高自身的方法和途径又很多种,小青老师比较推荐大家通过逛博客、论坛或者视频的方式来学习编程,适当的也可以在论坛上发表一下自己平时学习的方法,分享给别的小伙伴,也可以参考、学习他人的经验和方法,能够从中开拓思想,并提升自己的思维能力。

对于零基础,想学JAVA的同学,除了以上几个步骤外,小青老师认为能最快入行JAVA的,还是选择报培训班进行系统学习比较好,因为在培训学校,你能接受到当下最新的技术知识,培训出来也能更符合人才市场的用人标准,从而更快速的进入到IT行业!

学技术、好工作就读北京北大青鸟!如果你想找JAVA培训学校,欢迎来昆北大青鸟咨询!北京北大青鸟主要进行软件编程培训、UI设计培训、java培训、计算机培训等相关培训,依托北京大学雄厚的教育资源和强大的师资力量,秉承北大青鸟“教育改变生活”的理念,以高薪就业为导向,打造适应时代需要的职业教育产品。北京北大青鸟计算机学校位于北京市官渡区春城路银海领域16栋商务楼,欢迎您上门考察或者电咨询!

 


小白想学Java开发,不知道怎么学?这篇文章帮你梳理学习路线

2020-06-12 11:09·师兄睿谈

在现在的互联网市场中,虽然做Web开发的语言越来越多,有很多新兴的语言貌似大有流行之势,比如最近很火的python、go语言。

但是Java作为Web世界的老大,地位依然无法撼动,Java性能优良、成熟的社区、全套(几乎最全)的开源框架支持等原因,Java在做Web开发这一方面,依然是老大哥,再加上众多大公司的支持,学习Java仍然是有必要的!

因此呢,新手小白想要学习JavaWeb开发,想要通过它来找到一份好职业,就必须要经过一系列系统的学习,才能稳操胜券。

我结合了个人的开发经验和学习心得,发现很多新手其实在学习Java道路上走了弯路,很多新手想要去速成Java,这一点其实是无可厚非的,但是真的能够速成的却很少,这是为什么呢?

心急吃不了热豆腐,一心想着速成,是学不到什么深入的东西的。还是要脚踏实地,踏踏实实的静下心来学习才行。

但是Java的知识体系又过于庞大,很多其实是新手一开始没必要去学习的东西,一旦学习了一些旧的技术,很容易发现,学过的技术都被淘汰了,去面试会被笑话的。

所以,我就特别的整理了这篇文章,抛砖引玉,把我知道的,我认为非常有助于新手学习的成长路线分享给大家。真的适合非常非常新的新手!

从认识编程开始
  • 什么是编程?
  • 通常是由一个实际问题而引起的,我们为了解决这个问题,通常会想一些解决办法,这些解决办法可以是人工,也可以是机器来执行,从而得到答案或者结果。

    那么编程就是人们为了解决某个实际问题,从而通过一种编程语言实现某种解决办法(算法),让计算机去执行编写的代码(含有算法的执行逻辑),并最终得到结果的过程。

    为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

  • 什么是Java?
  • Java是一门面向对象编程语言,它吸收了C++语言的各种优点,摒弃了C++里难以理解的多继承、指针等概念,对C++进行取其精华去其糟粕,优化了很多内容,使得程序开发完全面向对象、简单好用。Java具有功能强大和简单易用两个特征,它作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  • 什么是面向对象?
  • 学习Java,就必须要懂这个概念,这也是目前编程语言开发中的主流思想(OOP)。

    面向对象是一种思想,是基于面向过程而言的。

    就比如你要吃饭,你得经历:

    摘菜-->洗菜-->切菜-->炒菜-->出锅-->开吃

    这些步骤,而这些步骤都是你要亲自去做的。这就是面向过程。

    然后你觉得自己做法太累了,你雇了一个保姆,对你来说,流程就大大简化了:

    等保姆把饭做好-->开吃

    这就是面向对象,保姆具备了做饭一系列的行为动作,你不再像之前那样需要关心才是怎么做的,水放多了放少了的杂七杂八问题,把做饭的所有活都打包让保姆去做了,做饭这些活动就属于保姆自己的行为。

    把一些功能、属性、行为封装到一起形成一个对象,然后只需要指挥这个对象做他能做的事情,这就是面向对象的思想。

    有了这些基本概念,下面就可以进入正题了,后面我将只列出问题和知识点,具体不做解答,因为这是提供给小白学习的路线嘛,并不专注于具体问题的解答,只提供建议。


    Java基础知识

    推荐学习Java选择版本从JDK1.8开始,因为是速成,所以尽量不要选择过老的版本,也不要选择过于新的版本,目前Java8应该是最为普遍使用的版本。

    学习过程中,也暂且忽略Java7和Java8之间的变动、区别等等,只关注Java8的特性即可,完全没必要关注Java7(除非你学有余力)。

    推荐书籍:疯狂Java讲义(第四版),不是打广告哈,这是我个人觉得讲的比较好的一本书,真的非常基础,所以推荐大家买书的话就买这个。

    下面我列出一些学习过程中需要重点关注的问题:

    基础要求(这是必须要掌握的):

    基础概念篇:

  • 什么是java?
  • JVM、JRE和JDK的关系
  • 什么是跨平台?
  • Java语言有哪些特点?
  • 什么是字节码?
  • 什么是Java注释?
  • 什么是类、对象、属性、字段?
  • Java和C++的区别
  • 基础语法篇:

  • Java有哪些数据类型?
  • 算数运算符、逻辑运算符
  • 访问修饰符(包含类、属性、方法等)
  • 常量、静态变量、静态方法、静态代码段等
  • 关键字
  • 流程控制语句
  • 面向对象篇:

  • 面向对象和面向过程的区别?
  • 面向对象的三大特性
  • 类与接口(尤其加深理解抽象类、匿名内部类)
  • 构造函数(有参、无参、默认)的定义、作用
  • 成员变量和局部变量、静态变量与实例变量、普通变量的区别
  • 静态方法和实例方法的区别
  • 方法及返回值的作用
  • 重写与重载的区别、具体用法
  • 对象相等判断:==和equals的区别,什么是hashcode以及它的作用
  • 为什么Java中只有值传递
  • 值传递和引用传递有什么区别
  • 集合篇:

  • 什么是集合?
  • 集合的特点
  • 集合和数组的区别
  • 常见的集合类有哪些?
  • List,Set,Map三者的区别?List、Set、Map是否继承自Collection接口?List、Map、Set三个接口存取元素时,各有什么特点?
  • 哪些集合类是线程安全的?哪些是线程不安全的?
  • 怎么确保一个集合不能被修改?
  • 集合底层数据结构是怎么实现的?
  • 什么是迭代器?
  • 各种集合的各种遍历方法以及区别
  • 队列的用途以及特点、如何使用
  • HashMap的一些特征,链式存储的优点,null可不可以用作key或者value,有什么区分?
  • HashMap的初始长度是多少,它是怎么自动扩容的?
  • HashMap、HashTable、ConcurrentHashMap的区别
  • 集合的排序、集合工具类的使用
  • 并发编程篇:

  • 为什么要使用并发编程(并发编程的优点)
  • 多线程实现的几种方式?
  • 如何保证线程安全?
  • 什么是锁,有哪些锁?怎么使用锁?(可重入锁、读写锁、计数递减锁)
  • 什么是线程死锁?
  • 形成死锁的四个必要条件是什么?
  • 如何避免线程死锁?
  • 线程线程的生命周期及五种基本状态
  • sleep()、wait()、yield()方法有什么区别?什么场景下使用?
  • 为什么wait(),notify()和notifyAll()必须在同步方法或者同步块中被调用?
  • 同步方法、同步代码块、锁机制这三种方式的优缺点?什么情况下哪种方式更适合?
  • 线程同步和互斥
  • 线程池有哪些、怎么使用?
  • ThreadLocal是什么?有哪些使用场景?
  • 什么是原子操作?在JavaConcurrencyAPI中有哪些原子类(atomicclasses)?
  • 说一下atomic的原理?
  • IO篇:

  • Java中IO流有哪些,都怎么用?
  • BIO,NIO,AIO有什么区别?
  • Files的常用方法都有哪些?
  • 网络篇:

  • TCP/IP协议
  • TCP三次握手机制
  • TCP、UDP的区别以及各自如何使用
  • 什么是HTTP,HTTP与HTTPS,以及他们的区别是什么?
  • 常用HTTP状态码
  • GET和POST区别
  • 什么是Session会话,什么是Cookie?
  • 数据库访问篇:

  • 什么是JDBC、ODBC以及区别?
  • 什么是游标?
  • 如何使用JDBC增删改查?
  • 如何防止SQL注入?
  • Statement和PreparedStatement的区别?
  • 如何进行批量提交操作(比如批量提交insert语句)?
  • 进阶知识(可以后续再回来学习,但是也同样非常重要的知识):

    反射篇:

  • 什么是反射机制?
  • 反射机制优缺点
  • 反射机制的应用场景有哪些?
  • Java获取反射的三种方法
  • 通过反射获取类的类型、字段类型、方法执行等等
  • JVM篇:

  • jvm主要组成部分以及相关作用?
  • 堆空间和栈空间的区别、作用?
  • 深拷贝和浅拷贝
  • Java会存在内存泄漏吗?出现内存溢出怎么办?
  • java的垃圾回收机制
  • 什么是gc,gc的目的和时机是什么?
  • 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  • 垃圾回收算法有哪些?
  • 类加载机制
  • 各种类加载器及执行过程
  • 什么是双亲委派模型?
  • jvm如何调优,调优参数有哪些,有哪些工具?
  • 设计思想篇:

  • 23种设计模式原理、怎么使用?
  • 动态代理篇:

  • 什么是动态代理?
  • 动态代理和反射的关系?
  • JDK原生提供的动态代理是怎么实现和使用的?
  • cglib动态代理的实现方式有何不同?
  • cglib动态代理有什么优点?

  • JavaEE进阶(JavaWeb)

    工欲善其事,必先利其器。Java最强大的地方,在于它的工具种类繁多,框架层出不穷,当一个先进的思想出现时,往往Java就是最先成熟运用的那一个。学习利用优秀的框架(尤其是开源框架),对于开发非常有帮助,提升开发效率,避免重复造轮子。

    首先要了解JavaWeb主流的分层架构思想:

    MVC架构

  • MVC的思想?
  • 什么是DAO层?
  • 什么是Service层?
  • 什么是控制层?
  • 其次是ORM思想:

  • 什么是持久化?
  • 什么是持久层?
  • 什么是ORM?
  • 为什么要使用ORM?
  • ORM框架有哪些:Hibernate、Mybatis
  • 必学框架1:大名鼎鼎的Spring

  • Spring框架的设计目标,设计理念,和核心是什么?
  • Spring容器是什么?干什么用?
  • 什么是依赖注入?
  • 依赖注入解决了哪些现实的、棘手的问题?
  • 依赖注入的基本原理和使用规则
  • 什么是Springbean?
  • 什么是bean的自动装配?装配方式有哪些?Autowired和Resource注解的区别?
  • 什么是控制反转(IOC)?有什么作用
  • IOC的优点是什么?
  • 学习Spring各种注解,尤其是@Component,@Controller,@Repository,@Service有何区别?
  • Spring中的分层架构思想:表现层、控制层、服务层、数据访问层
  • JdbcTemplate如何使用?
  • 在Spring框架中如何更有效地使用JDBC?
  • 解释JDBC抽象和DAO模块
  • springDAO有什么用?
  • springJDBCAPI中存在哪些类?
  • 使用Spring通过什么方式访问Hibernate?使用Spring访问Hibernate的方法有哪些?
  • Spring支持的事务管理类型,spring事务实现方式有哪些?
  • 什么是切面(AOP)?为什么要面向切面编程?
  • SpringAOPandAspectJAOP有什么区别?AOP有哪些实现方式?
  • AOP有哪些应用场景?
  • 如何实现基于注解的切面?
  • 必学框架2-ORM(二选一):Hibernate

  • Hibernate工作原理及为什么要用?
  • 如何延迟加载(懒加载)?
  • 怎样实现类之间的关系?(如:一对多、多对多的关系)
  • hibernate的三种状态,以及它们之间如何转换?
  • Hibernate的缓存机制
  • Hibernate的查询方式有几种?分别怎么用?
  • 它的特点是什么?与mybatis有什么区别?
  • 必学框架3-ORM(二选一):MyBatis

  • 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
  • 传统JDBC开发存在的问题
  • JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
  • Mybatis优缺点
  • MyBatis框架适用场景
  • Hibernate和MyBatis的区别
  • MyBatis的工作原理
  • Mybatis是否支持懒加载?如果支持,它的实现原理是什么?
  • 在mapper中如何传递多个参数?
  • MyBatis实现一对一,一对多有几种方式,怎么操作的?
  • Mybatis动态sql是做什么的?它的执行原理是什么?
  • Mybatis怎么进行分页查询?
  • Mybatis的一级、二级缓存的原理,怎么使用?
  • 必学框架4-MVC:SpringMVC

  • 什么是Springmvc,它的核心组件是什么?
  • 什么是控制器(Controller)?
  • 什么是DispatcherServlet?(会涉及servlet知识,但是可以了解一下,新手没必要去学,等后面可以再补充这方面的知识,还是说一个目的:速成)
  • 常用注解,怎么使用
  • 怎么进行异常处理?
  • 中文乱码问题怎么解决?
  • 如何实现监听器、拦截器?
  • 各种参数绑定的使用
  • 如果要买书看的话,我觉得李刚出品的《轻量级JavaWeb企业应用实战》这本还不错,当然如果你还有更好的选择,可以在评论区说明哈。我只是凭借个人经验推荐。

    学会了上面几个框架之后,基本上就可以开发后段项目了,这时要学习的是如何整合这些框架到同一个项目里,搭建一个spring-mvc-hibernate项目(简称ssh,为了避免Struts2歧义,一次我写全吧),或者是搭建个spring-mvc-mybatis(ssm)框架的项目。

    也许你会发现,上面几个框架整合开发过程中,会有很多的麻烦,比如一大堆配置文件,每个框架都有自己单独的配置文件,各个配置中也相当地复杂,新手很容易会搭建一个整合项目可能一星期都搞不定。

    那么这时候,我的建议是,前面几种框架的思想和知识点你学到了就行,为了让你不受打击,免去被上面几个框架整合时出现的问题烦扰,可以直接学习下面这个框架,让你体会到什么叫简单。

    必学框架5:SpringBoot

    如果真的想更快速度的学习JavaWeb,可以直接来学习这个框架,它是Spring、SpringMvc更高程度的一个封装,提供了更简单上手的开发方式,真的是足够简单。但是前面的框架知识和思想依然非常重要,在SpringBoot里面都会涉及。

    在有了上面那些框架知识的基础之上,再来学习SpringBoot是非常容易的。

    具体我就不多说了,可以买本书来看。推荐:《SpringBoot编程思想(核心篇)》、《SpringBoot实战》

    学习过程中,注意思考下面这些问题:

  • 为什么会出现SpringBoot?它有哪些优点?
  • SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
  • 什么是JavaConfig?
  • SpringBoot自动配置原理是什么?以及配置加载顺序是怎样的?
  • 什么是YAML?YAML配置的优势在哪里?
  • springboot核心配置文件是什么?bootstrap.properties和application.properties有何区别?
  • SpringBoot中如何解决跨域问题?
  • 学到这里,你就已经从一个新手小白变身成为一名初级JAVA后端开发工程师了!恭喜恭喜!

    接下来,想要进一步提高自己的技术,下面的这些框架也要学习:

  • SpringData:对Hibernate做了个封装,无缝对接Springboot
  • SpringBatch:批任务处理框架
  • Quartz:也是一种定时任务处理框架
  • Redis:分布式key-value数据库(做缓存非常棒)
  • RabbitMQ/Kafka:消息队列
  • MongoDB:一个高性能的文档数据库
  • 基本上就是这些了,新手学习Java的路线是十分陡峭的,最重要的是呢,心态要放平,不要一开始被这些东西给唬到了,其实真踏踏实实地学下来,发现也没有什么难得。贵在坚持,坚持,坚持!

    加油吧!少年!

    花了3个多小时整理的,码字很不容易哈哈!希望能够帮助到你,谢谢支持!

    如果你喜欢这篇文章,欢迎点赞、评论、转发!

    我会经常分享科技、计算机编程等方面的知识、经验,感兴趣的话点个关注吧!@IT研究僧大师兄

    【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

    电话+V:1599997-8052

    机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

    小白想学java怎么学
    发布人:qq3585835697 发布时间:2024-11-08