在线学习Java编程的最佳方法[通俗易懂]

2022-09-08 13:05:13 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

1.简介

Java是使用最广泛的编程语言之一。 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言。 掌握Java的人有很多话题。 好消息是,您可以在线找到很多内容。 在本文中,我们将对所有这些主题进行分类,并提供对文章和代码示例的引用,这些文章和代码示例将指导您完成学习Java的过程。

目录

1.简介 2.先决条件 3.基础-核心Java 4.数据类型 5.馆藏 6.算法 7.并发 8.设计模式 9. Spring框架 10. JDBC – JPA –休眠 11.建筑学 12. Java 8 13.桌面Java 14.测试 15.记录 16.面试题 17.结论

2.先决条件

2.1安装Java

开始编写第一个程序之前的第一步是安装Java,尤其是JDK (Java开发工具包),它由编写程序所需的库和Java编译器(称为JRE)组成 。 可以找到有关如何通过JDK命令安装Java和运行第一个程序的分步指南:

  • 如何创建和运行第一个Java程序

2.2安装IDE

IDE是必不可少的工具,因为它可以帮助您开发和编译Java程序。 IDE捆绑了一组插件,可以使您的生活更轻松。 最广泛使用的IDE是:

  • 日食
  • IntelliJ
  • NetBeans

如果要了解有关如何下载,安装和使用这些IDE的更多信息,请阅读以下教程:

  • Eclipse初学者教程
  • IntelliJ IDEA初学者教程
  • NetBeans IDE教程

在下面的部分中,我们将继续介绍Java基础知识。

3.基础-核心Java

安装Java和您最喜欢的IDE之后,您就可以学习Java的基础知识,也称为Core Java 。 在此之前,您应该首先了解程序如何通过main方法启动:

  • Java公共静态void main(String [] args)示例

3.1 Java包

Java项目由类组成,这些类分组在包中。 它类似于文件夹(包)和文件(类)的概念。 一个组织良好的项目将帮助开发人员轻松维护,理解和阅读代码。

  • 项目包装组织
  • 关于Java包

3.2 Java变量

现在让我们看看Java支持哪些变量以及如何声明它们。 变量是Java程序中基本的存储单元。 变量由标识符,类型和可选的初始化程序的组合定义。 此外,所有变量都有一个范围,该范围定义了它们的可见性和生存期。

  • Java变量

参见下面的声明和初始化Java变量的示例:

代码语言:javascript复制
int a, b, c; // declares three ints, a, b, and c.

int d = 3, e, f = 5; // declares three more ints, initializing // d and f.

byte z = 22; // initializes z.

double pi = 3.14159; // declares an approximation of pi.

char x = ‘x’; // the variable x has the value ‘x’.

boolean d = false;   // boolean value initialized with value false;

3.4 Java原始数据类型

原始数据类型是最基本的数据类型。 Java定义了八种原始数据类型:字节,短型,整数,长型,字符,浮点型,双精度和布尔型。 在前面的示例中,我们看到了如何声明它们并对其进行初始化。 让我们更详细地了解那些:

  • Java数据类型和标识符

3.5 Java运算符

运算符用于对变量和值执行运算。 简而言之,最基本的运算符及其在Java中的用法是:

  • 使用Additive运算符添加变量。
  • 使用Subtraction运算符减去变量。
  • 使用Multiplication运算符可以将变量相乘。
  • 使用Division运算符对变量进行除法。
  • 使用Modulo运算符可获取变量除法的余数。

要了解有关这些运算符的更多信息,请参阅以下文章:

  • 算术运算符
  • 模运算符

3.6 Java if-else

if-else语句是所有控制流语句中最基本的语句。 它告诉您的程序仅在特定测试的结果为true时才执行代码的特定部分。 它具有非常简单的语法,可以找到更多信息:

  • 简单的if / else语句
  • 如果–否则为编码风格最佳实践

参见以下if-else语句的非常基本的示例:

代码语言:javascript复制
boolean b = false;
 
if (b) {
    System.out.println("Variable value is true");
}
else {
    System.out.println("Variable value is NOT true");
}

3.7 Java循环

如果您需要多次执行一个代码块,那么您肯定必须使用一种称为循环的机制。 Java提供了三种循环机制,分别是forwhile循环和switch语句。

  • Java for循环示例
  • Java for-each循环示例
  • Java切换案例示例

下面我们来看一个使用最广泛的for循环示例:

代码语言:javascript复制
public static void main(String args[]) {
    String[] cities = { "Athens", "Thessaloniki", "Chania", "Patra", "Larissa" };
 
    for (String cityname : cities) {
        System.out.println(cityname);
    }
 
}

3.8 Java数组

数组在大多数Java程序中都使用。 您需要了解如何初始化和迭代数组,而不用访问数组中超出数组范围的索引。

  • Java字符串数组示例

在下面找到数组初始化和迭代的示例:

代码语言:javascript复制
public static void main(String args[]) {
 
    // declare a string array with initial size
    String[] schoolbag = new String[4];
 
    // add elements to the array    
    schoolbag[0] = "Books";
    schoolbag[1] = "Pens";
    schoolbag[2] = "Pencils";
    schoolbag[3] = "Notebooks";
       
    // this will cause ArrayIndexOutOfBoundsException
    // schoolbag[4] = "Notebooks";
}

3.9 Java异常

没有任何程序可以编写出完美无瑕的文件。 为此,Java支持通过异常处理错误。 开发人员或Java本身都会引发异常。

  • 在Java中处理异常
  • Java异常处理教程(包含示例和最佳实践)

4.数据类型

Java 数据类型是编程中非常重要的数据结构的实现。 下面我们列出了最重要的方法及其示例。

4.1字符串

String类可能是Java程序中最常用的类型之一。 字符串实际上是一个字符序列。 实际上,字符串对象由char数组支持。 一个String,可以通过两种方式初始化:

代码语言:javascript复制
String str= "Hello World";
String str = new String("Hello World");

有关String类的更多信息,请参见:

  • Java字符串类示例

Java提供了许多使开箱即用即简单又有效的方法。 最重要的是:

  • Java字符串格式示例
  • Java字符串比较示例
  • Java字符串拆分示例
  • Java字符串替换示例
  • Java String replaceAll示例
  • Java字符串长度示例
  • Java字符串包含示例
  • Java字符串匹配示例
  • Java字符串数组示例

4.2套

集合是保存唯一值的数据结构。 在Java中, Set接口具有多种实现,它们提供了快速的查找,因此在程序中得到了广泛的使用。 Set接口使用最广泛的实现是HashSet类。

  • Java设置示例
  • Java中的HashSet

4.3地图

映射是保存键值对的数据结构。 与Set相似, Map界面也有多种实现,它们提供了快速查找。 Map接口使用最广泛的实现是HashMap类。

  • Java Map示例
  • Java Hashmap示例

4.4排队

队列是一种数据结构,其中的元素按顺序保留。 Queue接口具有多种实现,而LinkedList类是最常用的一种。

  • Java队列示例
  • Java中的LinkedList

4.5树

是一种数据结构,其中包含一个从根开始的元素集合,其中每个元素都包含一个值和对子元素的引用。 Java提供的树实现是TreeMapTreeSet类。

  • Java.util.TreeMap示例
  • Java.util.TreeSet示例

4.6枚举

枚举是一种特殊的数据类型,它使变量能够属于一组预定义的常量。 枚举内部定义的值是常量,应以大写字母键入。

  • Java枚举示例

5.馆藏

Java Collections框架是一组类和接口,它们实现了我们在上一节中看到的一些最常用的集合数据结构,例如Set,Map,Queue,Tree。 java.util.Collections类具有一些非常重要的方法:

  • java.util.Collections示例
  • Java集合排序示例
  • 随机播放列表元素示例
  • 清单范例的倒序
  • 替换列表示例的所有元素
  • 将Collection复制到另一个Collection示例

以下比较将帮助您根据用例决定最佳的数据结构。

  • Java HashMap与TreeMap示例
  • Java ArrayList与LinkedList示例

6.算法

了解如何在Java中实现常见算法(例如排序,递归等)非常重要。 无论您使用哪种编程语言,理解和学习算法都将使您成为更好的开发人员。 下面我们提供一些最常见的算法:

  • Java中的Quicksort算法
  • Java中的Mergesort算法
  • Java递归示例
  • Java中的析因程序
  • Java回文计划
  • Java素数示例
  • 二进制搜索Java数组示例

7.并发

Java对同时执行多个线程的多线程程序提供了出色的支持。 并发是Java中最难理解和掌握的主题之一,因此它需要大量的阅读和练习。 要开始并发,请阅读:

  • 线程与并发介绍
  • Java Concurrency Essentials教程
  • 您可以下载Java Concurrency Essentials

然后,您应该学习并发的基础知识,例如死锁,监视器,synced和volatile关键字:

  • 并发基础知识:死锁和对象监视器
  • Java同步关键字示例
  • Java中的Volatile如何工作?
  • Java Concurrency Essentials教程

Java提供了并发类,这些类将帮助您开发多线程程序:

  • Java AtomicInteger示例
  • java.util.concurrent包
  • CountDownLatch示例
  • 叉/连接框架

最后,对于并发应用程序,应考虑性能和测试:

  • 性能,可伸缩性和活力
  • 测试并发应用

8.设计模式

作为Java开发人员要学习的另一个非常重要的主题是设计模式 。 在编程中,设计模式为软件设计中的常见问题提供了解决方案。 可以转换为代码的设计模式非常多。 一些最常用的是:

  • 辛格尔顿
  • 抽象工厂
  • 建造者
  • 观察者
  • 正面

除了上述内容之外,如果您想成为Java程序的设计和体系结构的大师,还需要学习其他设计模式。 这些是以下内容:

  • 游客
  • 迭代器
  • 装饰器
  • 口译员
  • 命令
  • 战略
  • 模板
  • 纪念品
  • 原型
  • 飞行重量
  • 责任链
  • 代理
  • 调解员
  • 综合
  • 适配器

9. Spring框架

Java有一个庞大的开源社区,该社区建立了许多框架,简化了Java应用程序的开发。 最著名的是Spring框架。 Spring是一个开放源代码框架,由几个模块组成,这些模块可以解决企业应用程序开发的复杂性。 要开始使用Spring:

  • Spring初学者教程实例
  • 您可以下载Spring Framework Cookbook

下面我们看一下Spring提供的最重要的模块。

9.1SpringAOP

Spring AOP用于提供声明性企业服务,尤其是替代EJB声明性服务。 它还用于允许用户实现自定义方面,并通过AOP补充其对OOP的使用。

  • Spring AOP示例

9.2Spring安全

Spring Security使开发人员可以通过托管方式轻松集成安全功能。 它还与最新的OAuth2授权框架集成在一起,该框架使第三方应用程序可以通过协调资源所有者和HTTP服务之间的批准交互来代表资源所有者来获得对HTTP服务的有限访问权,或者第三方应用程序代表自己获取访问权限。

  • Spring Security 4教程
  • Spring Security OAuth2示例
  • 通过数据库身份验证教程的Spring Security

9.3Spring交易

Spring使用注释简化了事务管理。 IT在不同的事务管理API之上提供了一个抽象层,它可以帮助我们专注于业务问题,而无需了解很多基本的事务管理API。

  • 带有JDBC示例的Spring事务管理示例
  • 在Spring中了解事务注释
  • Spring @Transactional实际如何工作?

9.4Spring数据

Spring Data使使用数据访问技术,关系和非关系数据库,map-reduce框架以及基于云的数据服务变得容易。 使用Spring Data的好处是,它消除了许多样板代码,并提供了更清洁,更易读的DAO层实现。 此外,它还有助于使代码松散耦合,因此,在不同JPA供应商之间进行切换是配置问题。

  • Spring数据初学者教程
  • Spring Data JPA教程
  • 您可以下载Spring Data Programming Cookbook

9.5 Spring MVC

Spring MVC提供了Model-View-Controller架构,简化了松耦合Web应用程序的开发。 对于Web应用程序,后果还包括许多挑战。 具体来说,其中一些是状态管理,工作流和验证。 HTTP协议的无状态性质只会使事情变得更加复杂。 Spring Web框架旨在帮助我们应对这些挑战。

  • Spring MVC教程
  • Spring MVC Hello World示例
  • Spring MVC体系结构概述示例

9.6 Spring集成

Spring Integration是一种轻量级消息传递解决方案,它将为您的应用程序添加集成功能。 这是一个轻量级的消息传递解决方案,它将为您的Spring应用程序添加集成功能。 作为消息传递策略,它提供了一种快速共享信息的方式,并且所涉及的组件或应用程序之间具有高度的去耦性。

  • Spring整合基础
  • Spring Integration完整示例

9.7弹簧靴

通过Spring Boot ,可以轻松创建独立的,基于生产级的基于Spring的应用程序,而无需进行过多的配置。 Spring Boot负责应用程序基础结构,而您可以专注于对实际业务进行编码。 它对依赖项做出合理的假设,并相应地添加它们。 它还使您可以根据需要自定义依赖项。 Spring Boot已变得非常流行,并且已在许多应用程序中使用。

  • 面向初学者的Spring Boot教程
  • Spring Boot和JPA示例
  • Spring Boot配置教程

10. JDBC – JPA –休眠

以下是用于与关系数据库(例如MySQL,Oracle等)进行交互的库的列表。

10.1 JDBC

JDBC的目的是以通用的方式与任何数据库(例如MySQL,Oracle等)进行交互。 这是为了隐藏特定于数据库供应商的此类详细信息,并为客户端应用程序提供通用接口。 正如我们在上一节中看到的那样,Spring框架也支持JDBC。

  • 初学者的Jdbc示例
  • Spring JdbcTemplate示例
  • 带有JDBC示例的Spring事务管理示例
  • 您可以下载JDBC教程

10.2 JPA

Java Persistence API (JPA)是与供应商无关的规范,用于将Java对象映射到关系数据库的表。 该规范的实现允许应用程序开发人员从正在使用的特定数据库产品中抽象出来,并允许他们实现CRUD(创建,读取,更新和删除)操作,以便同一代码可以在不同的数据库产品上运行。 JPA已成为事实上的标准,用于编写与数据库交互的应用程序代码。

  • 您可以下载JPA Minibook
  • JPA教程–最终指南

10.3休眠

冬眠 是完全在Java中使用的高性能对象关系映射(ORM)框架。 Hibernate还提供查询服务以及持久性。 这为开发人员提供了一种将Java类中的对象结构映射到关系数据库表的方法。 ORM框架简化了将对象实例中的数据存储到持久性数据存储中并将该数据加载回相同的对象结构中的过程。 ORM实际上是一种用于在关系数据库和面向对象的编程语言之间转换数据的编程技术。

  • 面向初学者的Hibernate教程(包含示例)
  • Hibernate最佳做法教程
  • 您可以下载休眠教程

11.建筑学

在软件中选择最佳架构至关重要。 有时,可以将多个体系结构和模式组合到一个系统中,并且将完美的设计融入您的解决方案中通常感觉就像是一门艺术。 最常见的架构是整体式多层 ,SOA微服务

  • 选择软件架构

11.1整体多层

多层体系结构是一种体系结构模型,建议将软件组件组织到不同的层中。 这些层中的每一层都实现为软件组件的物理隔离容器。

  • 多层架构

11.2 SOA

SOA描述了一组用于创建基于标准的,基于业务的松散耦合服务的模式,由于描述,实现和绑定之间的关注点分离,因此提供了新的灵活性

  • SOA示例应用程序

11.3微服务

微服务使您可以处理大型应用程序,并分解或分解成职责范围狭窄的易于管理的小型组件。 这里包含的关键点是分解和解绑功能。

  • 微服务架构-快速指南
  • Java开发人员微服务:简介
  • Java开发人员的微服务:微服务通信
  • 适用于Java开发人员的微服务:Java / JVM格局
  • 适用于Java开发人员的微服务:Monoglot还是Polyglot?
  • 适用于Java开发人员的微服务:实现微服务(同步,异步,反应式,非阻塞)
  • Java开发人员的微服务:微服务和分布式计算的谬误
  • 适用于Java开发人员的微服务:管理安全性和机密
  • 适用于Java开发人员的微服务:测试
  • 适用于Java开发人员的微服务:性能和负载测试
  • 适用于Java开发人员的微服务:安全测试和扫描
  • 微服务面试问答

要选择最佳架构,请检查以下比较:

  • 微服务与SOA

12. Java 8

从Java 8开始的最新Java版本具有Java开发人员应注意的新重要功能。 仍然最常用的版本是Java 6-8。

12.1 Java 8

Java 8是革命性的发行版,因为它包括对Java编程模型的巨大升级以及JVM的协调发展。 Java 8通过lambda表达式和Stream API以及许多其他功能支持功能编程。

  • Java 8函数式编程教程
  • Java 8教程
  • 您可以下载Java 8功能

12.2 Java 9

Java 9并不像Java 8那样流行,但是它具有一些令人兴奋的新功能,例如模块和Java Shell工具(JShell),这是一个用于学习Java编程语言和对Java代码进行原型设计的交互式工具。

  • Java 9 Jshell教程
  • Java 9教程

12.3 Java 10-11

Java 10和11仍然不是很流行,但是它们提供的新功能将改变我们编码和模块化程序的方式。

  • Java 10将改变您的编码方式
  • Java 11新功能教程

13.桌面Java

尽管Java在开发桌面应用程序方面不是很出名,但它具有许多可用于创建快速,安全和可移植的富客户端应用程序和小程序的技术。 最好的技术是Swing,AWT和JavaFX。

13.1摇摆

Swing API提供了一套全面的GUI组件和服务,可用于开发具有商业质量的台式机和Internet / Intranet应用程序。

  • Java Swing初学者教程
  • JAVA Swing应用示例
  • 如何使用Swing在Java中创建Gui

13.2 AWT

AWT(抽象窗口工具包)具有Java SE桌面库的核心基础。 它包括一个健壮的事件处理模型; 图形和成像工具,包括形状,颜色和字体类别; 布局管理器,用于灵活的窗口布局; 允许通过本机平台剪贴板剪切和粘贴的数据传输类(包括拖放)。

  • 创建框架示例
  • 创建基本形状示例
  • 创建一个容器示例

13.4 JavaFX

JavaFX是一个用于创建和交付桌面应用程序以及可在各种设备上运行的富Internet应用程序的软件平台。 JavaFX旨在取代Swing作为Java SE的标准GUI库,但是在可预见的将来,两者都将包括在内。 JavaFX支持Microsoft Windows,Linux和macOS上的台式计算机和Web浏览器。

  • JavaFX初学者教程
  • JavaFX效果示例
  • JavaFX布局示例

14.测试

由于程序代码库的增加,软件测试变得越来越流行。 编写尽可能多的测试并覆盖程序的所有功能至关重要。 测试可以分为两大类:单元测试和自动化测试。

14.1 JUnit

Java有其自己的单元测试库JUnit库。 单元可以是函数,类,包或子系统。 因此,术语“单元测试”指的是测试代码中如此小的单元,以确保它们按预期工作的实践。 有关JUnit的更多信息,请阅读以下内容:

  • 用于单元测试的JUnit教程– ULTIMATE指南
  • 您可以下载JUnit教程

14.2自动化

使用自动化测试,开发人员(或测试人员)编写脚本以用于端到端自动化软件测试。 SeleniumCucumber是Java最著名的自动化测试框架。 去看一下:

  • 硒自动化测试教程
  • 您可以下载Selenium编程手册
  • JUnit黄瓜示例

15.记录

记录是指活动的记录。 日志记录是开发团队的常见问题。 几个框架简化并标准化了Java平台的日志记录过程。 Java最常用的日志记录框架是Log4jLogback 。 由于Log4j项目的支持终止,因此Logback旨在作为Log4j项目的后继产品。 Apache Log4j2是Log4j的升级,它对Log4j进行了重大改进,并提供了Logback中可用的许多改进,同时解决了Logback体系结构中的一些固有问题。

15.1登录

Logback是Java社区中使用最广泛的日志框架之一。 它提供了比Log4j更快的实现,提供了更多的配置选项,并且在归档旧日志文件方面具有更大的灵活性。

  • 初学者登录指南
  • Logback RollingFileAppender示例
  • 登录配置示例

15.2 Log4j

Log4j2是流行且有影响力的Log4j库的更新版本,该库是一个简单,灵活且快速的基于Java的日志记录框架。 它是线程安全的,并支持国际化。

  • Log4j 2入门
  • Log4j 2 RollingFileAppender示例
  • Log4j 2最佳做法示例

16.面试题

为了在面试中证明您作为Java开发人员的技能,您将被问到许多与Core Java,多线程,OOP,Collections,Spring Framework,SQL有关的问题。 采访中提出的最重要问题的摘要:

  • 您可以下载Java面试问题
  • 150个Java面试问答-最终列表
  • 100多线程和并发面试问答–最终清单
  • 40个Java Collections面试问答
  • 100Spring面试问答–最终清单
  • SQL面试问题与解答–最终清单

17.在线学习Java编程-摘要

在这篇文章中,我们看了学习Java的在线资源。 我们从安装Java和IDE开始,然后转到Core Java,Data Types和Java Collections。 我们看到了学习算法,并发性和设计模式的重要性。 然后,我们介绍了Spring框架,JDBC,JPA和Hibernate。 我们研究了架构模式,最新的Java版本,桌面Java,测试,日志记录以及最后一些非常重要的Java面试问题。

最后更新时间为2019年8月23日

翻译自: https://www.javacodegeeks.com/learn-java-programming-online.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156771.html原文链接:https://javaforall.cn

0 人点赞