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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 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,关注后即可获取最新文章推送

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

相关文章
|
1月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
5月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
160 2
|
1月前
|
传感器 安全 Java
《从头开始学java,一天一个知识点》之:循环结构:for与while循环的使用场景
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白
82 22
|
3月前
|
Java
Java快速入门之判断与循环
本文介绍了编程中的流程控制语句,主要包括顺序结构、判断结构(if语句和switch语句)以及循环结构(for、while和do...while)。通过这些语句可以精确控制程序的执行流程。if语句有三种格式,分别用于简单条件判断、二选一判断和多条件判断。switch语句适用于有限个离散值的选择判断,而循环结构则用于重复执行某段代码,其中for循环适合已知次数的情况,while循环适合未知次数但有明确结束条件的情况,do...while则是先执行后判断。文中还提供了多个示例和练习,帮助读者理解并掌握这些重要的编程概念。
|
4月前
|
API 开发者 UED
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
通过学习API 13,我深入研究了**PreviewKit(文件预览服务)**。该模块支持快速预览多种文件类型(文本、图片、视频、音频、PDF等),为文件管理类应用提供系统级支持。本文分享了从搭建开发环境到实现单文件和多文件预览的全过程,并介绍了如何构建一个实用的文件预览助手应用。通过实践,不仅掌握了技术细节,还提升了个人开发能力。希望这些经验能为其他开发者带来启发与帮助。
101 10
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
|
5月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中stream API与传统for循环在性能上的对比,通过多个示例分析了不同场景下两者的优劣。作者指出,尽管stream API使代码更简洁,但不当使用会降低可读性和性能,特别是在处理大数据量时。实验结果显示,在多数情况下,普通for循环的性能优于stream API,尤其是在单次操作耗时较短但需多次执行的场景中。文章建议开发者在设计初期就考虑全局流程,避免重复使用stream流,以提升代码质量和性能。
139 1
Java循环操作哪个快?
|
5月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
136 5
Java循环操作哪个快?
|
5月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
124 4
|
6月前
|
算法 Java 测试技术
🧑‍💻Java零基础:Java 的循环退出语句 break
【10月更文挑战第16天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
137 6
|
7月前
|
Java
java基础(2)循环语句for、while、do...while
本文介绍了Java中的基础循环语句,包括for循环、while循环和do...while循环。文章通过示例代码展示了for循环的基本结构和用法,while循环的先判断后执行逻辑,以及do...while循环的先执行后判断逻辑。这些循环语句在Java编程中非常常用,用于执行重复的任务。
92 4
java基础(2)循环语句for、while、do...while