Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数

Java 基础

什么是 Java

Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领域广泛应用。

基本概念

理解基础知识是建立坚实基础的关键。包括学习基本术语、命名约定、保留字、条件、函数、数据结构、面向对象编程(OOP)、包等。

例如

  • 要打印输出,使用 —> System.out.println();
  • 要从用户获取输入,使用 —> ScannerBufferedReader
  • 等等

数据类型和变量

在 Java 中,变量是在 Java 程序执行期间存储数据值的数据容器。每个变量都被分配了一个数据类型,指定了它可以保存的值的类型和数量。变量是数据的内存位置名称。Java 变量主要有三种类型:局部变量、实例变量和静态变量。

参考文章:深入理解 Java 变量类型、声明及应用

数据类型分为两组

  • 原始数据类型 - byteshortintlongfloatdoublebooleanchar
  • 非原始数据类型 - String、数组和类

参考文章:Java 包装类:原始数据类型与迭代器

条件语句

Java有以下条件语句:

  • 使用 if 指定在指定条件为真时要执行的代码块
  • 使用 else 指定在相同条件为假时要执行的代码块
  • 使用 else if 指定要测试的新条件;如果第一个条件为假
  • 使用 switch 指定要执行的许多替代代码块
  • 使用 ? : 运算符指定一行条件

参考文章:Java 数学运算与条件语句全解析

函数

方法/函数是执行某些任务的一种方式。同样,在像 Java 这样的编程语言中,函数方法是编写用于重复执行特定任务的代码块。它提供了代码的可重用性。我们编写一次函数,然后多次使用它。它遵循 DRY 原则,即“不要重复自己”。

步骤

  • 定义函数 - 数据类型 函数名称(参数){主体}
  • 调用函数 - 函数名称(值)

参考文章

循环

在 Java 和其他编程语言中,循环用于多次迭代程序的一部分。在 Java 中,有四种类型的循环,forforEachwhiledo...while

  • for 循环的语法是 for(初始化;条件;增量/减量){}
  • forEach 循环的语法是 for(数据类型 变量:数组名){}

参考文章:深入理解 Java 循环结构:while、do while、for 和 for-each 循环

异常处理

Java 中的异常处理是处理运行时错误的有效手段,以便保留应用程序的正常流程。Java 异常处理是处理运行时错误的机制,如 ClassNotFoundExceptionIOExceptionSQLExceptionRemoteException 等。

有三种类型的异常 -

  • 已检查异常 - 在编译时检查的异常。例如 - IOException
  • 未检查异常 - 在运行时检查的异常。例如 - NullPointerException
  • 错误 - 这是不可恢复的。例如 - OutOfMemoryError

参考文章:Java 异常处理与正则表达式详解,实例演练及最佳实践

数据结构

正如名称所示,数据结构是一种以内存中的方式组织数据的方法,以便可以有效地使用它。一些常见的数据结构包括数组、链表、堆栈、哈希表、队列、树、堆和图。

  • 数组为同质数据分配连续内存
  • 链表以节点形式存储数据,并具有引用
  • 堆栈遵循后进先出原则
  • 队列遵循先进先出原则

参考文章

面向对象编程(OOP)

面向对象编程是 Java 编程的核心,用于使用类和对象设计程序。这也可以被描述为用于访问代码的数据控制。

  • 接口
  • 对象
  • 继承
  • 多态
  • 抽象
  • 封装

参考文章

包是主要包含类和接口的命名空间。例如,标准类 ArrayList 位于包 java.util 中。对于这个类,java.util.ArrayList 被称为其完全限定名,因为这个语法没有歧义。不同包中的类可以具有相同的名称。例如,你有两个类 java.util.Datejava.sql.Date,它们是不同的。如果在类中没有声明包,它的包就是默认包。

要创建包,请使用此命令 -> javac -d 目录 java文件名

参考文章:Java 包装类:原始数据类型与迭代器

文件和API

学习如何处理文件,即读取、写入和删除文件和文件夹等。还要学习如何进行API调用、解析传入的响应等。

  • FileWriter - 此类用于通过写入字符来创建文件
  • FileReader - 此类用于以字符形式从文件中读取数据

参考文章:Java 文件处理完全指南:创建、读取、写入和删除文件详细解析

Java 高级主题

内存管理

在 Java 中,内存管理是对象的分配和释放过程,称为内存管理。

集合框架

Java 中的集合是一个提供存储和操作对象组的架构。Java 集合可以执行所有你对数据执行的操作,如搜索、排序、插入、操作和删除。

序列化

序列化是将对象的状态转换为字节流;反序列化则执行相反的操作。换句话说,序列化是将 Java 对象转换为一串静态的字节流,我们可以将其保存到数据库或通过网络传输。

网络套接字

Java 网络是连接两台或更多计算设备的概念,以便我们可以共享资源。Java 套接字编程提供了在不同计算设备之间共享数据的功能。套接字是网络上运行的两个程序之间双向通信链的一端。套接字绑定到端口号,以便 TCP 层可以识别数据将要发送到的应用程序。

泛型

Java 泛型方法和泛型类使程序员能够使用单一方法声明一组相关方法,或者使用单一类声明一组相关类型。

Java 在 Java 8 中提供了一个新的附加包,称为 java.util.stream。该包包含类、接口和枚举,允许对元素执行函数式风格的操作。你可以通过导入 java.util.stream 包来使用流。

JVM 工作原理

Java 虚拟机是一个用于执行其他程序的程序。JVM 适用于许多硬件和软件平台(即,JVM 是平台相关的)。JVM 实际上调用 Java 代码中存在的 main 方法。JVM 是 JRE(Java 运行时环境)的一部分。

垃圾回收

Java 垃圾回收是 Java 程序执行自动内存管理的过程。Java 程序编译为字节码,可以在 Java 虚拟机(JVM)上运行。当 Java 程序在 JVM 上运行时,对象被创建在堆上,这是专门为程序分配的一部分内存。

线程基础

在 Java 中,线程是程序执行时所采取的方向或路径。通常,所有程序至少有一个线程,称为主线程,由 JVM 或 Java 虚拟机在程序执行开始时提供。

参考文章:深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践

构建工具

构建工具是一个程序或命令行实用程序,自动化软件的编译、组装和部署过程。

构建工具不仅仅限于编译代码;它们还可以帮助进行包管理、处理依赖关系以及支持持续集成系统。

Gradle

Gradle 是一个开源的构建自动化工具,帮助软件工程师测试、构建和发布高性能软件产品。此外,Gradle 还支持多语言开发。目前,Gradle 支持的语言包括 Java、Kotlin、Groovy、Scala、C/C++ 和 JavaScript。

Maven

Maven 是一个开源构建工具,主要用于 Java 项目。

Ant

Apache Ant 是一个 Java 库和命令行工具,其任务是驱动在构建文件中描述的过程,这些过程作为相互依赖的目标和扩展点。Ant 的主要用途是构建 Java 应用程序。Ant 提供了许多内置任务,允许编译、组装、测试和运行 Java 应用程序。Ant 也可以有效地用于构建非 Java 应用程序,例如 C 或 C++ 应用程序。更一般地说,Ant 可以用于驱动任何可以用目标和任务来描述的过程。

Web 框架

框架是带有预写代码的工具,充当模板或骨架,可以通过简单地填入所需的代码来重用,从而使开发人员能够在没有从头开始创建每一行代码的开销的情况下编写其应用程序。

Spring

Spring 是一个强大的开源 Java 平台(框架),用于创建和维护 Web 应用程序。

Spring Boot

Spring Boot 是一个开源的、基于微服务的 Java Web 框架。Spring Boot 框架通过其代码库中的预构建代码创建一个完全可配置的、完全准备好生产的环境。微服务架构为开发人员提供了一个完全封闭的应用程序,包括内嵌式应用程序服务器。

参考文章:

Play Framework

Play Framework 是一个高效率的 Web 应用程序框架,支持模型-视图-控制器模式。它用 Scala 编写,但也可以用于其他在 JVM 上编译并运行的编程语言,例如 Java。

Spark

Spark 是一个用于使用 Kotlin 和 Java 8 创建 Web 应用程序的微框架。它的灵感来自于 Sinatra,一个流行的 Ruby 微框架。

ORM(对象关系映射)

ORM 是一种编程方法,用于在 Java 中将对象映射到数据库中的关系实体。它是在关系数据库和面向对象编程语言之间转换数据的方法。在 Java 中,一些流行的 ORM 工具/框架包括:

JPA (Jakarta Persistence API)

Jakarta 持久性 API 为 Java 开发人员提供了在 Java 应用程序中管理关系数据的对象/关系映射工具。JPA 既不是工具也不是框架,而是一组用于访问、持久化和管理 Java 对象与关系数据库之间数据的接口。以下是 JPA 的主要特性:

  • 更清晰、更简单、更标准化的 ORM。
  • 支持继承、多态和多态查询。
  • 支持使用元数据注释/XML 描述符定义映射(对象与关系数据库之间)。
  • 支持用于静态和动态查询的丰富的类似 SQL 的查询语言。
  • 可插入的持久性提供程序,如 Hibernate、MyBatis 等。
  • 缓存:JPA 支持两种类型的缓存 - 第一级和第二级 - 以支持性能调整。

注意:在 2019 年,JPAJava Persistence API 更名为 Jakarta Persistence

Spring Data JPA

Spring Data JPA 旨在通过将实际所需的工作量减少到实际需要的程度,从而显著改进数据访问层的实现。作为开发人员,您编写存储库接口,包括自定义查找方法,Spring 将自动提供实现。

Hibernate

Hibernate 是一个开源的对象关系映射工具,为 Web 应用程序提供了将面向对象的域模型映射到关系数据库的框架。

Ebean

Ebean 是一个用 Java 编写的对象关系映射工具。它支持用于声明实体的标准 JPA 注释。然而,它为持久化提供了一个更简单的 API。实际上,关于 Ebean 架构值得一提的一点是它是无状态的,这意味着它不完全管理实体。

日志框架

日志是一个重要的功能,帮助开发人员追踪错误,提供了捕获日志文件的能力。日志提供应用程序的完整跟踪信息,并记录应用程序中发生的任何关键故障。日志有三个组件:记录器(Logger)、日志处理器或附加器(Logging handlers or Appenders)和布局或日志格式化程序(Layouts or logging formatters)。

Log4j2

Apache Log4j 是一个基于 Java 的日志实用程序,用于记录有助于应用程序平稳运行、确定发生了什么以及在发生错误时帮助调试过程的信息。Log4j2log4j 库的更新版本,保留了其前身的所有日志功能,并在性能方面进行了显著改进。

Logback

Logback 是 Java 社区中使用最广泛的日志框架之一,是 Log4j 的替代品。它提供更快的实现,更多配置选项,并在存档旧日志文件方面更加灵活。

Slf4j

SLF4J(Simple Logging Facade for Java) 是各种 Java 日志框架的抽象层,如 Log4j 2Logback。这允许在部署时插入不同的日志框架,而无需进行代码更改。

Tinylog

Tinylog 是一个轻量级的开源 Java 和 Android 日志框架,经过优化以提供易用性。

Java JDBC

JDBC 是 Java 编程中用于与数据库交互的 API(应用程序编程接口)。JDBC 的类和接口允许应用程序将用户发出的请求发送到指定的数据库。

Jdbi3

Jdbi 是一个开源的 Java 库(Apache 许可证),它使用 lambda 表达式和反射来提供比 JDBC 更友好、更高级的接口,用于访问数据库。

JDBC 模板

JDBCTemplateSpring JDBC 核心包中的一个核心类,简化了 JDBC 的使用并帮助避免常见的错误。它在内部使用 JDBC API,消除了许多与 JDBC API 相关的问题。它执行 SQL 查询或更新,启动对 ResultSets 的迭代,捕获 JDBC 异常,并将其转换为通用异常。它执行核心的 JDBC 工作流程,将应用程序代码留给提供 SQL 和提取结果。它处理异常,并通过 org.springframework.dao 包中定义的异常类提供信息性的异常消息。

测试

构建符合需求且没有缺陷的软件的关键在于测试。软件测试帮助开发人员确保他们正在构建正确的软件。当测试作为开发过程的一部分运行时(通常与持续集成工具一起使用),它们增强了信心并防止了代码的回归。

模拟(Mocking)

模拟从单元测试中移除外部依赖项,以创建整个可控制环境的感觉。传统的模拟方法涉及对与我们要测试的类交互的所有其他类进行模拟。常见的模拟目标包括:

  • 数据库连接
  • Web 服务
  • 慢速类
  • 具有副作用的类
  • 具有非确定性行为的类

Cucumber JVM

Cucumber 是一个支持行为驱动开发(BDD)的测试工具。它提供了一种编写任何人都能理解的测试的方式,无论他们的技术知识如何。

Cukes

cukes-rest 采用 Cucumber 的简单性,并为 HTTP 规范提供绑定。作为一种额外的功能,cukes-rest 为从文件系统存储和使用请求/响应内容、.features 中的变量支持、所有步骤中的上下文膨胀以及允许用户添加额外的项目特定内容的自定义插件系统提供了步骤。

Jbehave

JBehave 是一种面向行为驱动开发(BDD)的框架。BDD 是测试驱动开发(TDD)和验收测试驱动设计的演变,并旨在使这些实践对新手和专家更加易于理解和直观。它将词汇从基于测试的转变为基于行为的,并定位自己为一种设计哲学。

Rest Assured

在 Java 中测试和验证 REST 服务比在 Ruby 和 Groovy 等动态语言中更困难。Rest Assured 将使用这些语言的简便性引入到 Java 领域中。

JMeter

Apache JMeter 是一个 Apache 项目,可用作负载测试工具,用于分析和测量各种服务的性能,重点是 Web 应用程序。

JUnit

JUnit 是 Java 的测试框架。

TestNG

TestNG 是受到 JUnitNUnit 启发的测试框架,但引入了一些新的功能,使其更强大且更易于使用。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
23天前
|
存储 消息中间件 NoSQL
Redis数据类型详解:选择合适的数据结构优化你的应用
Redis数据类型详解:选择合适的数据结构优化你的应用
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
22天前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【4月更文挑战第5天】 在现代软件开发中,多线程编程是一个不可或缺的技术要素。它允许程序员编写能够并行处理多个任务的程序,从而充分利用多核处理器的计算能力,提高应用程序的性能。Java作为一种广泛使用的编程语言,提供了丰富的多线程编程支持。本文将介绍Java多线程编程的基础知识,并通过实例演示如何创建和管理线程,以及如何解决多线程环境中的常见问题。
|
6天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
存储 前端开发 Java
Java实现文件分片上传
Java实现文件分片上传
4 0
|
3天前
|
IDE Java 开发工具
Java从入门到精通:1.3.1实践编程巩固基础知识
Java从入门到精通:1.3.1实践编程巩固基础知识
|
3天前
|
Java
Java基础知识整理,驼峰规则、流程控制、自增自减
在这一篇文章中我们总结了包括注释、关键字、运算符的Java基础知识点,今天继续来聊一聊命名规则(驼峰)、流程控制、自增自减。
34 3
|
3天前
|
Java 开发者
Java基础知识整理,注释、关键字、运算符
在日常的工作中,总会遇到很多大段的代码,逻辑复杂,看得人云山雾绕,这时候若能言简意赅的加上注释,会让阅读者豁然开朗,这就是注释的魅力!
37 11
|
28天前
|
关系型数据库 Java 开发工具
Java入门高频考查基础知识9(15问万字参考答案)
本文探讨了Spring Cloud的工作原理,包括注册中心的心跳机制、服务发现机制,以及Eureka默认的负载均衡策略。同时,概述了Spring Boot中常用的注解及其实现方式,并深入讨论了Spring事务的注解、回滚条件、传播性和隔离级别。文章还介绍了MySQL的存储引擎及其区别,特别关注了InnoDB如何实现MySQL的事务处理。此外,本文还详细探讨了MySQL索引,包括B+树的原理和设计索引的方法。最后,比较了Git和SVN的区别,并介绍了Git命令的底层原理及流程。
32 0
Java入门高频考查基础知识9(15问万字参考答案)
|
28天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
59 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)

热门文章

最新文章

  • 1
    Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
    4
  • 2
    Serverless 应用引擎操作报错合集之阿里函数计算中出现错误代码“CAFileNotFound”如何解决
    5
  • 3
    Serverless 应用引擎操作报错合集之阿里函数计算中调用zip-oss-fc函数返回时候出现错误代码如何解决
    4
  • 4
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,遇到错误代码“Handled Error”如何解决
    4
  • 5
    Serverless 应用引擎操作报错合集之阿里函数计算中我打开sd时遇到错误,信息为"Function instance exited unexpectedly(code 1, message:operation not permitted) with start command ' '."如何解决
    10
  • 6
    Serverless 应用引擎操作报错合集之阿里函数计算中配置完fc,出现‘Function instance exited unexpectedly(code 1, message:operation not permitted) with start command 'npm run start '. 报错如何解决
    12
  • 7
    Serverless 应用引擎操作报错合集之阿里函数计算中,出现"Process exited unexpectedly before completing request"错误如何解决
    6
  • 8
    Serverless 应用引擎操作报错合集之阿里函数计算中,总是报错“Process exited unexpectedly before completing request (duration: 0ms, maxMemoryUsage: 0.00MB)”如何解决
    7
  • 9
    Serverless 应用引擎操作报错合集之阿里函数计算中{"ErrorCode":"AccessDenied","ErrorMessage":"Current user is in debt."}出现这个代码如何解决
    10
  • 10
    Serverless 应用引擎操作报错合集之阿里函数计算中我的3dopenpose报错 "error 预览失败" 如何解决
    10