是如何学习 Java 的?

时间:2024-05-31 14:12:57


 

我曾在携程旅行网做 Java 开发,也曾拿过阿里 P7 offer 和饿了么、美团等公司的 offer,这是职位都是 Java 开发岗,也做过 Java 面试官面试过不少同学。下面我就和大家分享一下我学习 Java的经验。

我将从 Java 基础知识Java 框架计算机基础和 Java 工程实践等四个方面来说一下学习方法,并推荐一些经典书籍,书不多,都是我自己买过实体书并读过的,具有很强的实操性。

以下本文的思维导图

一、Java 基础知识

Java 的基础知识包括如下部分:

1. 基础语法部分

01、Java 基础语法与运行/编译环境

  • JRE/JDK
  • Java 变量和字面值
  • Java 数据类型
  • Java 操作符
  • Java 输入输出
  • Java 表达式 & 语句 & 代码块
  • Java 注释

02、Java 流程控制

  • Java if else
  • Java switch 语句
  • Java for 循环
  • Java while 循环
  • Java break 语句
  • Java continue 语句

03、Java 数组

  • Java 数组
  • 多维数组
  • Java 数组复制

04、Java 面向对象

  • Java 类和对象
  • Java 方法
  • Java 方法重载
  • Java 构造方法
  • Java 字符串
  • Java 访问权限
  • Java this 关键字
  • Java final 关键字
  • Java 递归
  • Java instanceof 操作符
  • Java 继承
  • Java 方法重写
  • Java super 关键字
  • 抽象类 & 抽象方法
  • Java 接口
  • Java 多态
  • Java 封装
  • 嵌套&内部类
  • Java static 关键字
  • Java 匿名内部类
  • Java 单例
  • Java 枚举类
  • Java 枚举构造方法
  • Java 枚举字符串
  • Java 反射

05、Java 异常处理

  • Java 异常简介
  • Java 异常处理
  • Java try catch
  • Java throw 和 throws
  • Java 捕获多个异常
  • Java try-with-resources
  • Java 注解
  • Java 注解类型
  • Java 日志
  • Java 断言

06、Java 集合与队列

  • Java 集合框架
  • Java 集合接口
  • Java List 接口
  • Java ArrayList
  • Java Vector
  • Java Stack
  • Java 队列接口
  • Java 优先级队列
  • Java 双端队列接口
  • Java LinkedList
  • Java 数组队列
  • Java 阻塞队列接口
  • Java ArrayBlockingQueue
  • Java LinkedBlockingQueue
  • Java Map 接口
  • Java HashMap
  • Java LinkedHashMap
  • Java WeakHashMap
  • Java EnumMap
  • Java SortedMap 接口
  • Java NavigableMap 接口
  • Java TreeMap
  • Java ConcurrentMap 接口
  • Java ConcurrentHashMap
  • Java Set 接口
  • Java HashSet
  • Java EnumSet
  • Java LinkedHashSet
  • Java SortedSet 接口
  • Java NavigableSet 接口
  • Java TreeSet
  • Java 集合算法
  • Java 迭代器接口
  • Java ListIterator 接口

07、Java I/O

  • Java InputStream
  • Java OutputStream
  • Java FileInputStream
  • Java FileOutputStream
  • Java ByteArrayInputStream
  • Java ByteArrayOutputStream
  • Java ObjectInputStream
  • Java ObjectOutputStream
  • Java BufferedInputStream
  • Java BufferedOutputStream
  • Java PrintStream
  • Java Reader
  • Java Writer
  • Java InputStreamReader
  • Java OutputStreamWriter
  • Java FileReader
  • Java FileWriter
  • Java BufferedReader
  • Java BufferedWriter
  • Java StringWriter
  • Java PrintWriter

学习 Java 基础知识推荐以下两本书:

  • Java核心技术卷1 基础知识
  • Java核心技术卷2高级特性

2. Java 并发编程(多线程)

  • 进程与线程的区别
  • 多线程的入门类和接口
  • 线程组和线程优先级
  • 线程的状态及主要转化方法
  • 线程间的通信
  • 重排序和 happens-before
  • volatile
  • synchronized 与锁
  • CAS 与原子操作
  • AQS
  • 计划任务
  • Stream 并行计算原理
  • Fork/Join
  • 通信工具类
  • CopyOnWrite
  • 并发集合容器
  • 锁接口和类
  • 阻塞队列
  • 线程池原理

Java 并发编程首推《Java并发编程实战》:

另外《Java并发编程的艺术》这一本也不错。

3. Java 网络编程

  • Java网络编程
  • Java网络编程精解

4. Java 虚拟机

无论是 Java 面试还是想成为 Java 高手或者在一些项目中进行性能调优都必须掌握的知识,一般需要掌握以下内容:

  • Java 内存结构
  • 垃圾回收
  • JVM 内存区域
  • Java 虚拟机栈
  • class 文件
  • 字节码指令
  • JVM 参数调优
  • Java 对象模型
  • HotSpot
  • 类加载机制
  • 编译和反编译
  • 反编译工具(javap)
  • JIT
  • 虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)

推荐的书是《深入理解Java虚拟机》,这本书现在已成了 Java 虚拟机中的经典的经典,建议从事 Java 开发的同学一定要好好看一看。

另外,《揭秘Java虚拟机——JVM设计原理与实现》这本书也不错。

5. Java Web

  • 深入分析Java Web技术内幕 修订版