是如何学习 Java 的?

news2024/10/6 10:39:25


 

我曾在携程旅行网做 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技术内幕 修订版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1714125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式 _行为型模式_备忘录模式

一、备忘录模式 1、备忘录模式 备忘录模式(Memento Pattern)是一种行为型模式。通过保存一个对象的某个状态,以便在适当的时候恢复对象。 2、实现思路 (1)、定义记录数据的格式规范。 (2)、编…

计算机算法中的数字表示法——原码、反码、补码

目录 1.前言2.研究数字表示法的意义3.数字表示法3.1 无符号整数3.2 有符号数值3.3 二进制补码(Twos Complement, 2C)3.4 二进制反码(也称作 1 的补码, Ones Complement, 1C)3.5 减 1 表示法(Diminished one System, D1)3.6 原码、反码、补码总结 1.前言 昨天有粉丝让我讲解下定…

SRE视角下的DevOps构建之道

引言: 随着数字化时代的飞速发展,软件成为了企业竞争力的核心。为了更高效地交付高质量的软件,DevOps(Development和Operations的组合)作为一种文化、实践和工具集的集合,逐渐成为了行业内的热门话题。然而…

怎样快速查找网页代码中存在的错误?

计算机很机械,代码中存在微小的错误,计算机就得不到正确的运行结果。比如,一个字母的大小写、比如,个别地方丢掉了一个符号、、、如此等等。这就要求程序员和计算机是心灵相通的,不能有任何的“隔阂”。 但是&#xf…

汇智知了堂实力展示:四川农业大学Python爬虫实训圆满结束

近日,汇智知了堂在四川农业大学举办的为期五天的校内综合项目实训活动已圆满结束。本次实训聚焦Python爬虫技术,旨在提升学生的编程能力和数据分析能力,为学生未来的职业发展打下坚实的基础。 作为一家在IT教育行业享有盛誉的机构&#xff…

【ArcGISPro】3.1.5下载和安装教程

下载教程 arcgis下载地址:Трекер (rutracker.net) 点击磁力链下载弹出对应的软件进行下载 ArcGISPro3.1新特性 ArcGIS Pro 3.1是ArcGIS Pro的最新版本,它引入了一些新的特性和功能,以提高用户的工作效率和数据分析能力。以下是ArcGIS…

基于Udp(收发信息使用同一个socket)网络通信编程

想要实现网络通信那么就要有一个客户端一个服务器 客户端发送数据,服务器接收数据并返回数据 网络通信就是进程通信 所以我们用两个程序来分别编写客户端和服务器 服务器 1,设置端口号, 2、ip可以固定位127.0.0.1来用于本地测试&#xff0c…

dbserver 软件 展示 全部模式库

目录 1 问题2 实现 1 问题 dbserver 软件 展示 全部模式库 2 实现 以上就可以了

基于文本来推荐相似酒店

基于文本来推荐相似酒店 查看数据集基本信息 import pandas as pd import numpy as np from nltk.corpus import stopwords from sklearn.metrics.pairwise import linear_kernel from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extrac…

扩散模型--论文分享篇

定义:输入文本与图像,生成对图像的描述。 所采用的方法:对比学习、基于跨注意力机制的多模态融合 基于扩散模型的方法:主要介绍的扩散的原理 图像生成任务介绍 GAN VAE 扩散模型 基于GAN的图像生成,一个生成器与判别…

非量表题如何进行信效度分析

效度是指设计的题确实在测量某个东西,一般问卷中使用到。如果是量表类的数据,其一般是用因子分析这种方法去验证效度水平,其可通过因子分析探究各测量量表的内部结构情况,分析因子分析得到的内部结构与自己预期的内部结构进行对比…

子网划分案例

4.2子网划分 “有类编址”的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的IP地址资源浪费。因此可以利用子网划分来减少地址浪费,即VLSM (Variable Length Subnet Mask),可变长…

Java实现对象存储的4种方式(本地对象存储、MINIO、阿里云OSS、FastDFS)

文章目录 Java实现对象存储的3中方式1、概述2、本地对象存储2.1 配置本地文件相关信息2.2 通用映射配置 ResourcesConfig2.3 文件上传业务 LocalSysFileServiceImpl2.4 上传接口2.5 演示 3、MINIO3.1 依赖3.2 配置3.3 配置连接信息3.4. MINIO文件上传业务3.5 文件上传下载接口3…

高考前很焦虑?看看罗永浩提的三个建议!罗永浩推荐的随身WiFi居然蕴含这样的商机?2024普通人如何翻身?

你能相信现如今身家过亿的老罗罗永浩高中就辍学了吗?相信很多人都不敢置信吧。罗永浩无论是表现出来的口才、情商还是智商,无论如何都无法让人把他和高中辍学联系起来。 而这一点似乎也是老罗人生中的一个遗憾,于是又在一年高考季的时候&…

【AREngine BUG 解决方法】无法获取有效的相机图像尺寸

近期拿了一台 华为mate20 Pro的手机,在运行AR示例的过程中出现了黑屏。 问题排查 SDK版本:com.huawei.hms:arenginesdk:3.7.0.3 定位 经排查,发现(ARCamera对象的相机内参) getImageDimensions()返回的图像尺寸的width和height都为0。 这…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前,AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展,基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上,多个领域展现出了前所未有的能力。无论是自然语言处理、…

Dinky MySQLCDC 整库同步到 Doris

资源:flink 1.17.0、dinky 1.0.2、doris-2.0.1-rc04 问题:Cannot deserialize value of type int from String ,detailMessageunknowndatabases ,not a valid int value 2024-05-29 16:52:20.136 ERROR org.apache.doris.flink.…

电脑录屏怎么录?7个电脑录屏软件免费版强势来袭,赶快收藏!

电脑录屏怎么录?相信很多小伙伴们都不知道怎么在Windows电脑上录屏吧?在当今社会,随着互联网的快速发展,越来越多的小伙伴们开始通过制作视频内容来分享知识、展示技能或者记录生活。电脑录屏成为了一种简单高效的方式&#xff0c…

C语言-----指针数组 \ 数组指针

一 指针数组 用来存放指针的数组 int arr[10]; //整型数组 char ch[5]; //字符数组 int * arr[6]; //存放整型指针的数组 char * arr[5]; //存放字符指针的数组 // 指针数组的应用 int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,…

LED显示屏模组七大参数

LED模组是LED显示屏的核心组件,它包含LED线路板和外壳,将LED灯珠按照特定规则排列并封装,通常还会进行防水处理。随着LED显示屏行业的发展及其广泛应用,LED模组的功能和作用变得愈加重要。那么,LED模组的七大参数是什么…