感悟

很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛。博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都在这门语言的学习上下了不少功夫,得益于之前有C语言的基础,所以那时候并没有想象的吃力,但是因为Java语言是面向对象设计,所以很多时候还是要从C中转换一下思想。

大学的学习还是比较自主和自由,大概就是让自己培养学习的习惯和能力吧,那时候学习Java语言,也是按顺序来捡着学,直到最后才有个比较系统的体会,到后来能够完成一些JavaWeb的项目了,也就开始注重高级开发了,因为按照这样一来,基础知识是完全够用的,不会的时候,查缺补漏一番也能够解决当时的问题。

在这样的自我认知中,慢慢的,你觉得你熟悉Java语言,确实当你在做开发的时候,你觉得很顺畅很自然,这些都是以你目前知识能够胜任的,但是,如果让你说说Java学习的知识体系,你是否能够按照大学课本上的目录大概说一遍呢?说说目录下都有哪些知识点,都能够让你学会什么,为什么这样编排。这一连串的问题,可以在脑海里好好过一下,好像说到每个点自己都会,但是有系统性和连贯性吗?这可以从侧面反应出我们的学习习惯和学习方式和能力,如果你对这种学习体系了如指掌,那么应该很快能够讲出一个大概的体系,这是基础本领,我觉得你既然用Java这么手艺来讨饭吃,那么对它有个脉络性的熟悉,怎么讲都是应该的吧。

其实,博主自己在这里也缺少积累,更加没有意识到要有这样的觉悟,平时写Java程序没有问题,但是要是问问你学术一点的东西,好像需要想个半天,到最后组织好的语言也没有书本上的那么专业,而且说不全,更是没有体系和大纲可言。博主想了起来,17年面试一家互联网金融公司,就有被面试官问到这个问题:请你说说Java程序设计语言的学习大纲,可以参照大学课本的教学大纲说一说。当时博主是惊讶的,还问这个东西,我表示无语了。当时按照常理来想一想,这应该是Java从业人员都应该会的吧。令人羞愧的是,我在当时居然没有回答出来,当时就觉得懵逼,完全不按面试的套路出牌啊,我也没有事先准备,足以见得,还是我平时不注重学习,不注重积累,甚至是学习语言的方式出了问题,这让我一度开始怀疑自己。

最近在重新梳理知识点,发现如果要往上学习的越牢固越深入,稳固的根基是必不可少的,不管学习哪门语言,这些都是基础,都是必须要掌握的,所以,借此机会,我想重新梳理和整理一下那些年学过的Java语言程序设计,把学习大纲大概罗列一番,希望能够给自己留下更深刻的印象,同时也给自己提个醒,学习新东西需要注意方法,建立学习体系很重要,还要自己总结和积累。

知识体系大纲摘要

1、Java入门基础及环境搭建

  • 主要阐述Java语言的历史和面向对象设计的特点,Java语言在1995年由Sun公司推出,最后在2009年被Oracle收购,目前用得多得版本是JDK1.7和1.8,在笔者写当前博客时,最新的JDK版本已经到12了。
  • 阐述面向对象语言设计的思想,比较面向对象设计和面向过程设计的差异。
  • Java JDK的下载和安装,以及环境变量的配置,使用记事本编写“Hello world”程序,然后使用CMD命令行编译和执行,正式入门Java语言的开发。
  • 讲解Java程序语言的基本要素和编程规范,如何使用流行的IDE来编写程序,讲解NetBeans、Eclipse和IntelliJ IDEA等开发工具的安装和使用,如何编写、设置以及调试代码。

2、Java程序设计基础

  • 讲解常量和变量的概念,声明方式和作用域。
  • 8种基本数据类型的定义和概念。
  • Java运算符的介绍,诸如算术、赋值、逻辑、关系、自增和自减、位和条件运算符,还包括运算符计算优先级的说明。
  • Java基本数据类型的转换。

3、Java流程控制语句

  • 介绍Java语句的编写方式和编写规范。
  • 流程控制语句的介绍如if else语句、switch case语句、while和do while语句、for和foreach循环语句,以及其他的流程控制语句如return、break和continue语句。
  • 通过案例和代码来熟悉流程控制语句的使用和编写。

4、Java字符串处理

  • 讲解String类型的基本定义和使用,以及如何连接字符串、计算长度、转换大小、去除空格、截取字串、分割字符串、字符串比较和替换,通过这种如连接、修改、替换、比较和查找的方式来熟悉String字符串的基本处理。
  • StringBuffer和StringBuilder等可变字符串的讲解和使用。
  • 正则表达式的讲解和使用。

5、Java数字和日期处理

  • Java Math类的常用方法介绍。
  • Java生成随机数,数字格式化以及各种类型数字的运算和转换。
  • Java日期和时间的处理,日期格式化和日、月、年等的基本计算。

6、Java数组和基本排序算法

  • 数组简介,一维数组、二维数组和多维数组的介绍。
  • 数组的声明、填充、查找以及复制方法等的说明。
  • java数组排序介绍,如基本和常用的冒泡排序、选择排序、快速排序和插入排序等。

7、Java类和对象

  • Java面向对象的概述,认识类和对象及两者的关系。
  • 类的定义,属性和方法,类变量和类方法,成员变量和成员方法,this关键字。
  • Java对象的创建,如何访问对象的属性和方法。
  • 对象的销毁介绍,访问控制修饰符介绍。
  • static和final修饰符介绍和使用,main方法。
  • Java方法的书写,参数声明,值传递和引用传递。
  • Java构造方法,包的概念。

8、Java类的封装、继承和多态

  • Java类的封装概念。
  • Java类的继承概念和用法介绍,super关键字。
  • Java对象类型转换和强制对象类型转换。
  • Java方法的重载和重写概念,如何区分两者。
  • Java的多态性介绍。
  • Java接口和抽象类的说明,以及两者的比较和区别。
  • Java内部类和匿名类介绍和使用。

9、Java异常处理

  • Java中的异常介绍,异常处理机制。
  • try-catch-finally语句说明和使用。
  • 声明、抛出异常的说明和使用,如何自定义异常。
  • 通过大量案例说明异常的使用。

10、Java集合、泛型和枚举

  • Java集合类的概念,Collection接口、List、Set和Map结合的介绍和使用。
  • Collection类和各类集合运算,如复制和循环遍历。
  • Java泛型介绍,枚举类型介绍。

11、Java反射机制

  • 反射机制的概念。
  • 通过反射来访问构造函数、方法和成员变量的使用和说明。

12、Java输入输出流和文件操作

  • Java流的概念,File类等流相关类的介绍和使用。
  • Java动态读取文件内容和输出。
  • Java字节流和字符流的说明和使用。

13、Java多线程编程

  • Java中线程的概念,线程的实现方式和声明周期。
  • 多线程访问实例变量和线程安全问题。
  • 多线程的控制和同步机制。
  • 多线程API中各方法的使用,停止线程和暂停线程,线程优先级等。

14、Java网络编程

  • Java网络编程基础知识,认识Socket。
  • 认识TCP和UDP等概念。
  • 网络编程基础类的学习和使用。

15、Java图形用户界面

  • 组件布局等的概念介绍。
  • 布局搭建,时间处理和Applet。