为什么?

关于Java的知识点,网上已经有很多,有

那我为什么还搞这么个知识库呢?
因为:

对我来说,写出来总比单独的过脑理解,映像更为深刻

除此之外,也便于自己在面试、工作中回顾这些知识点,从而加深自己的理解。
对你来说,为你提供一些参考,也有助于你加深对这些知识点的理解。

知识点汇总

整个知识库的内容是基于Java8。 总览 - 图1

  1. 变量和常量:本质来看,是“数据的引用”,从数据结构的角度来说,它是“数据元素”,想一下我们的编码过程,是不都是基于变量或常量进行操作的?String的拼接、截取,Integer的加减运算,List、Map的操作等等,我们都得先定义变量或常量,然后进行相关操作。除Java外的其他语言,如C/C++、Python,也都会有变量或常量。
  2. 方法:其他语言里叫函数,Java是面向对象设计,而非面向过程,所以,在Java里叫方法。它是一个可重复使用的逻辑单元,其中的一些值内容(变量)可以更改,但整体的逻辑流程不会变化,即,先执行什么、后执行什么、是循环处理还是选择一个分支执行,这些是固定不变的,在逻辑固定的基础上,你可以变化里面的值内容。这样的一个整体单元,就是一个方法。基本所有的语言,都会包含(函数)方法。
  3. 类和接口:Java是面向对象设计的,它将现实中的问题表示成一个个类,通过类之间的交互来处理问题;而接口,是行为动作的规定,表示了类之间按什么样的数据进行交互。
  4. 枚举和注解:枚举是为常量而设计的,编写程序时,总会用到很多常量,很早之前,通过final关键字 + class类来集中存放,现在可以使用枚举来表示;而注解,是一种标注说明,说明某个类,有某个标记,可以采用某种特殊方式处理,可以理解成打标签。
  5. 异常:程序编译、执行过程中,难免会遇到一些意想不到的错误,如变量名错误、类型转换错误、引用为空等等,这个时候,程序会中断,然后给出一个中断的说明,这个就是异常。
  6. 反射:在Java程序开发时,我们大多数都是基于类的实例对象进行操作,但有时,我们需要操作实例对象的类,这个时候需要用到反射,即,获取对象的Class对象(这里一定要理解到,Class也是一种对象,是描述类的对象)进行相关处理。
  7. 泛型:它更像是一种“限制”,限制某个类的变量类型,某个方法的参数类型必须是某种类型(或其子类),否则,编译不通过,它是编译期的一个校验,在运行时都会被擦除掉。
  8. IO:输入(input)、输出(output)流,用于将数据从硬盘加载到程序内存中,或将程序内存中的数据存储到硬盘上。
  9. Lambda表达式:Java8支持了Lambda表达式,使方法的调用可以写成 () -> {} 的形式,同时也提供了Stream流处理的形式,简化了代码的编写。
  10. 集合:可以理解成装数据的容器,一个集合对象可以包含多个数据元素,是“数据结构”的集中体现,在程序中会经常用到,几乎也是面试中必问的内容。
  11. 多线程:线程是程序运行过程中,cpu执行的基础单位,一个程序中,通常会有多个线程同时工作,让多个线程同时、正确的处理数据,是我们必须掌握的。

项目

https://gitee.com/smallZh/java8.git