Java 基础
什么是 Java
Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领域广泛应用。
基本概念
理解基础知识是建立坚实基础的关键。包括学习基本术语、命名约定、保留字、条件、函数、数据结构、面向对象编程(OOP)、包等。
例如
- 要打印输出,使用 --->
System.out.println();
- 要从用户获取输入,使用 --->
Scanner
或BufferedReader
- 等等
数据类型和变量
在 Java 中,变量是在 Java 程序执行期间存储数据值的数据容器。每个变量都被分配了一个数据类型,指定了它可以保存的值的类型和数量。变量是数据的内存位置名称。Java 变量主要有三种类型:局部变量、实例变量和静态变量。
参考文章:深入理解 Java 变量类型、声明及应用
数据类型分为两组
- 原始数据类型 -
byte
、short
、int
、long
、float
、double
、boolean
和char
- 非原始数据类型 -
String
、数组和类
参考文章:Java 包装类:原始数据类型与迭代器
条件语句
Java有以下条件语句:
- 使用
if
指定在指定条件为真时要执行的代码块 - 使用
else
指定在相同条件为假时要执行的代码块 - 使用
else if
指定要测试的新条件;如果第一个条件为假 - 使用
switch
指定要执行的许多替代代码块 - 使用
? :
运算符指定一行条件
参考文章:Java 数学运算与条件语句全解析
函数
方法/函数是执行某些任务的一种方式。同样,在像 Java 这样的编程语言中,函数方法是编写用于重复执行特定任务的代码块。它提供了代码的可重用性。我们编写一次函数,然后多次使用它。它遵循 DRY
原则,即"不要重复自己"。
步骤
- 定义函数 -
数据类型 函数名称(参数){主体}
- 调用函数 -
函数名称(值)
参考文章
- 深入了解 Java 方法和参数的使用方法
- 深入理解 Java 方法重载与递归应用
- 深入剖析 Java 类属性与类方法的应用
- Java 构造函数与修饰符详解:初始化对象与控制权限
- Java 抽象类与方法:实现安全性与代码重用
循环
在 Java 和其他编程语言中,循环用于多次迭代程序的一部分。在 Java 中,有四种类型的循环,for
、forEach
、while
和 do...while
。
for
循环的语法是for(初始化;条件;增量/减量){}
forEach
循环的语法是for(数据类型 变量:数组名){}
参考文章:深入理解 Java 循环结构:while、do while、for 和 for-each 循环
异常处理
Java 中的异常处理是处理运行时错误的有效手段,以便保留应用程序的正常流程。Java 异常处理是处理运行时错误的机制,如 ClassNotFoundException
、IOException
、SQLException
、RemoteException
等。
有三种类型的异常 -
- 已检查异常 - 在编译时检查的异常。例如 -
IOException
- 未检查异常 - 在运行时检查的异常。例如 -
NullPointerException
- 错误 - 这是不可恢复的。例如 -
OutOfMemoryError
参考文章:Java 异常处理与正则表达式详解,实例演练及最佳实践
数据结构
正如名称所示,数据结构是一种以内存中的方式组织数据的方法,以便可以有效地使用它。一些常见的数据结构包括数组、链表、堆栈、哈希表、队列、树、堆和图。
- 数组为同质数据分配连续内存
- 链表以节点形式存储数据,并具有引用
- 堆栈遵循后进先出原则
- 队列遵循先进先出原则
参考文章
面向对象编程(OOP)
面向对象编程是 Java 编程的核心,用于使用类和对象设计程序。这也可以被描述为用于访问代码的数据控制。
- 类
- 接口
- 对象
- 继承
- 多态
- 抽象
- 封装
参考文章
包
包是主要包含类和接口的命名空间。例如,标准类 ArrayList
位于包 java.util
中。对于这个类,java.util.ArrayList
被称为其完全限定名,因为这个语法没有歧义。不同包中的类可以具有相同的名称。例如,你有两个类 java.util.Date
和 java.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
框架通过其代码库中的预构建代码创建一个完全可配置的、完全准备好生产的环境。微服务架构为开发人员提供了一个完全封闭的应用程序,包括内嵌式应用程序服务器。
参考文章:
- 《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解
- 了解 Spring MVC 架构、Dispatcher Servlet 和 JSP 文件的关键作用
- 灵活配置 Spring 集合:List、Set、Map、Properties 详解
- 深度解析 Spring Security:身份验证、授权、OAuth2 和 JWT 身份验证的完整指南
- 深度剖析 Spring 框架在 Java 应用开发中的优势与应用
- 深入了解 Spring Boot 核心特性、注解和 Bean 作用域
- 深入了解 Spring Cloud Config、Spring Cloud Gateway 与断路器模式
- 深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
- 掌握 Spring IoC 容器与 Bean 作用域:详解 singleton 与 prototype 的使用与配置
- Spring 框架模块深度解析:核心容器、数据访问、Web 层与其他关键模块
- Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析
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 年,JPA
从 Java 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 的日志实用程序,用于记录有助于应用程序平稳运行、确定发生了什么以及在发生错误时帮助调试过程的信息。Log4j2
是 log4j
库的更新版本,保留了其前身的所有日志功能,并在性能方面进行了显著改进。
Logback
Logback
是 Java 社区中使用最广泛的日志框架之一,是 Log4j
的替代品。它提供更快的实现,更多配置选项,并在存档旧日志文件方面更加灵活。
Slf4j
SLF4J(Simple Logging Facade for Java)
是各种 Java 日志框架的抽象层,如 Log4j 2
或 Logback
。这允许在部署时插入不同的日志框架,而无需进行代码更改。
Tinylog
Tinylog
是一个轻量级的开源 Java 和 Android 日志框架,经过优化以提供易用性。
Java JDBC
JDBC
是 Java 编程中用于与数据库交互的 API(应用程序编程接口)。JDBC
的类和接口允许应用程序将用户发出的请求发送到指定的数据库。
Jdbi3
Jdbi
是一个开源的 Java 库(Apache 许可证),它使用 lambda 表达式和反射来提供比 JDBC
更友好、更高级的接口,用于访问数据库。
JDBC 模板
JDBCTemplate
是 Spring 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
是受到 JUnit
和 NUnit
启发的测试框架,但引入了一些新的功能,使其更强大且更易于使用。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注