大家好,又见面了,我是你们的朋友全栈君。
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.结论
开始编写第一个程序之前的第一步是安装Java,尤其是JDK (Java开发工具包),它由编写程序所需的库和Java编译器(称为JRE)组成 。 可以找到有关如何通过JDK命令安装Java和运行第一个程序的分步指南:
IDE是必不可少的工具,因为它可以帮助您开发和编译Java程序。 IDE捆绑了一组插件,可以使您的生活更轻松。 最广泛使用的IDE是:
如果要了解有关如何下载,安装和使用这些IDE的更多信息,请阅读以下教程:
在下面的部分中,我们将继续介绍Java基础知识。
安装Java和您最喜欢的IDE之后,您就可以学习Java的基础知识,也称为Core Java 。 在此之前,您应该首先了解程序如何通过main方法启动:
Java项目由类组成,这些类分组在包中。 它类似于文件夹(包)和文件(类)的概念。 一个组织良好的项目将帮助开发人员轻松维护,理解和阅读代码。
现在让我们看看Java支持哪些变量以及如何声明它们。 变量是Java程序中基本的存储单元。 变量由标识符,类型和可选的初始化程序的组合定义。 此外,所有变量都有一个范围,该范围定义了它们的可见性和生存期。
参见下面的声明和初始化Java变量的示例:
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;
原始数据类型是最基本的数据类型。 Java定义了八种原始数据类型:字节,短型,整数,长型,字符,浮点型,双精度和布尔型。 在前面的示例中,我们看到了如何声明它们并对其进行初始化。 让我们更详细地了解那些:
运算符用于对变量和值执行运算。 简而言之,最基本的运算符及其在Java中的用法是:
Additive
运算符添加变量。 Subtraction
运算符减去变量。 Multiplication
运算符可以将变量相乘。 Division
运算符对变量进行除法。 Modulo
运算符可获取变量除法的余数。 要了解有关这些运算符的更多信息,请参阅以下文章:
if-else语句是所有控制流语句中最基本的语句。 它告诉您的程序仅在特定测试的结果为true时才执行代码的特定部分。 它具有非常简单的语法,可以找到更多信息:
参见以下if-else语句的非常基本的示例:
boolean b = false;
if (b) {
System.out.println("Variable value is true");
}
else {
System.out.println("Variable value is NOT true");
}
如果您需要多次执行一个代码块,那么您肯定必须使用一种称为循环的机制。 Java提供了三种循环机制,分别是for , while循环和switch语句。
下面我们来看一个使用最广泛的for循环示例:
public static void main(String args[]) {
String[] cities = { "Athens", "Thessaloniki", "Chania", "Patra", "Larissa" };
for (String cityname : cities) {
System.out.println(cityname);
}
}
数组在大多数Java程序中都使用。 您需要了解如何初始化和迭代数组,而不用访问数组中超出数组范围的索引。
在下面找到数组初始化和迭代的示例:
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";
}
没有任何程序可以编写出完美无瑕的文件。 为此,Java支持通过异常处理错误。 开发人员或Java本身都会引发异常。
Java 数据类型是编程中非常重要的数据结构的实现。 下面我们列出了最重要的方法及其示例。
String类可能是Java程序中最常用的类型之一。 字符串实际上是一个字符序列。 实际上,字符串对象由char数组支持。 一个String,可以通过两种方式初始化:
String str= "Hello World";
String str = new String("Hello World");
有关String类的更多信息,请参见:
Java提供了许多使开箱即用即简单又有效的方法。 最重要的是:
集合是保存唯一值的数据结构。 在Java中, Set接口具有多种实现,它们提供了快速的查找,因此在程序中得到了广泛的使用。 Set接口使用最广泛的实现是HashSet类。
映射是保存键值对的数据结构。 与Set相似, Map界面也有多种实现,它们提供了快速查找。 Map接口使用最广泛的实现是HashMap类。
队列是一种数据结构,其中的元素按顺序保留。 Queue接口具有多种实现,而LinkedList类是最常用的一种。
树是一种数据结构,其中包含一个从根开始的元素集合,其中每个元素都包含一个值和对子元素的引用。 Java提供的树实现是TreeMap和TreeSet类。
枚举是一种特殊的数据类型,它使变量能够属于一组预定义的常量。 枚举内部定义的值是常量,应以大写字母键入。
Java Collections框架是一组类和接口,它们实现了我们在上一节中看到的一些最常用的集合数据结构,例如Set,Map,Queue,Tree。 java.util.Collections类具有一些非常重要的方法:
以下比较将帮助您根据用例决定最佳的数据结构。
了解如何在Java中实现常见算法(例如排序,递归等)非常重要。 无论您使用哪种编程语言,理解和学习算法都将使您成为更好的开发人员。 下面我们提供一些最常见的算法:
Java对同时执行多个线程的多线程程序提供了出色的支持。 并发是Java中最难理解和掌握的主题之一,因此它需要大量的阅读和练习。 要开始并发,请阅读:
然后,您应该学习并发的基础知识,例如死锁,监视器,synced和volatile关键字:
Java提供了并发类,这些类将帮助您开发多线程程序:
最后,对于并发应用程序,应考虑性能和测试:
作为Java开发人员要学习的另一个非常重要的主题是设计模式 。 在编程中,设计模式为软件设计中的常见问题提供了解决方案。 可以转换为代码的设计模式非常多。 一些最常用的是:
除了上述内容之外,如果您想成为Java程序的设计和体系结构的大师,还需要学习其他设计模式。 这些是以下内容:
Java有一个庞大的开源社区,该社区建立了许多框架,简化了Java应用程序的开发。 最著名的是Spring框架。 Spring是一个开放源代码框架,由几个模块组成,这些模块可以解决企业应用程序开发的复杂性。 要开始使用Spring:
下面我们看一下Spring提供的最重要的模块。
Spring AOP用于提供声明性企业服务,尤其是替代EJB声明性服务。 它还用于允许用户实现自定义方面,并通过AOP补充其对OOP的使用。
Spring Security使开发人员可以通过托管方式轻松集成安全功能。 它还与最新的OAuth2授权框架集成在一起,该框架使第三方应用程序可以通过协调资源所有者和HTTP服务之间的批准交互来代表资源所有者来获得对HTTP服务的有限访问权,或者第三方应用程序代表自己获取访问权限。
Spring使用注释简化了事务管理。 IT在不同的事务管理API之上提供了一个抽象层,它可以帮助我们专注于业务问题,而无需了解很多基本的事务管理API。
Spring Data使使用数据访问技术,关系和非关系数据库,map-reduce框架以及基于云的数据服务变得容易。 使用Spring Data的好处是,它消除了许多样板代码,并提供了更清洁,更易读的DAO层实现。 此外,它还有助于使代码松散耦合,因此,在不同JPA供应商之间进行切换是配置问题。
Spring MVC提供了Model-View-Controller架构,简化了松耦合Web应用程序的开发。 对于Web应用程序,后果还包括许多挑战。 具体来说,其中一些是状态管理,工作流和验证。 HTTP协议的无状态性质只会使事情变得更加复杂。 Spring Web框架旨在帮助我们应对这些挑战。
Spring Integration是一种轻量级消息传递解决方案,它将为您的应用程序添加集成功能。 这是一个轻量级的消息传递解决方案,它将为您的Spring应用程序添加集成功能。 作为消息传递策略,它提供了一种快速共享信息的方式,并且所涉及的组件或应用程序之间具有高度的去耦性。
通过Spring Boot ,可以轻松创建独立的,基于生产级的基于Spring的应用程序,而无需进行过多的配置。 Spring Boot负责应用程序基础结构,而您可以专注于对实际业务进行编码。 它对依赖项做出合理的假设,并相应地添加它们。 它还使您可以根据需要自定义依赖项。 Spring Boot已变得非常流行,并且已在许多应用程序中使用。
以下是用于与关系数据库(例如MySQL,Oracle等)进行交互的库的列表。
JDBC的目的是以通用的方式与任何数据库(例如MySQL,Oracle等)进行交互。 这是为了隐藏特定于数据库供应商的此类详细信息,并为客户端应用程序提供通用接口。 正如我们在上一节中看到的那样,Spring框架也支持JDBC。
Java Persistence API (JPA)是与供应商无关的规范,用于将Java对象映射到关系数据库的表。 该规范的实现允许应用程序开发人员从正在使用的特定数据库产品中抽象出来,并允许他们实现CRUD(创建,读取,更新和删除)操作,以便同一代码可以在不同的数据库产品上运行。 JPA已成为事实上的标准,用于编写与数据库交互的应用程序代码。
冬眠 是完全在Java中使用的高性能对象关系映射(ORM)框架。 Hibernate还提供查询服务以及持久性。 这为开发人员提供了一种将Java类中的对象结构映射到关系数据库表的方法。 ORM框架简化了将对象实例中的数据存储到持久性数据存储中并将该数据加载回相同的对象结构中的过程。 ORM实际上是一种用于在关系数据库和面向对象的编程语言之间转换数据的编程技术。
在软件中选择最佳架构至关重要。 有时,可以将多个体系结构和模式组合到一个系统中,并且将完美的设计融入您的解决方案中通常感觉就像是一门艺术。 最常见的架构是整体式多层 ,SOA和微服务 。
多层体系结构是一种体系结构模型,建议将软件组件组织到不同的层中。 这些层中的每一层都实现为软件组件的物理隔离容器。
SOA描述了一组用于创建基于标准的,基于业务的松散耦合服务的模式,由于描述,实现和绑定之间的关注点分离,因此提供了新的灵活性。
微服务使您可以处理大型应用程序,并分解或分解成职责范围狭窄的易于管理的小型组件。 这里包含的关键点是分解和解绑功能。
要选择最佳架构,请检查以下比较:
从Java 8开始的最新Java版本具有Java开发人员应注意的新重要功能。 仍然最常用的版本是Java 6-8。
Java 8是革命性的发行版,因为它包括对Java编程模型的巨大升级以及JVM的协调发展。 Java 8通过lambda表达式和Stream API以及许多其他功能支持功能编程。
Java 9并不像Java 8那样流行,但是它具有一些令人兴奋的新功能,例如模块和Java Shell工具(JShell),这是一个用于学习Java编程语言和对Java代码进行原型设计的交互式工具。
Java 10和11仍然不是很流行,但是它们提供的新功能将改变我们编码和模块化程序的方式。
尽管Java在开发桌面应用程序方面不是很出名,但它具有许多可用于创建快速,安全和可移植的富客户端应用程序和小程序的技术。 最好的技术是Swing,AWT和JavaFX。
Swing API提供了一套全面的GUI组件和服务,可用于开发具有商业质量的台式机和Internet / Intranet应用程序。
AWT(抽象窗口工具包)具有Java SE桌面库的核心基础。 它包括一个健壮的事件处理模型; 图形和成像工具,包括形状,颜色和字体类别; 布局管理器,用于灵活的窗口布局; 允许通过本机平台剪贴板剪切和粘贴的数据传输类(包括拖放)。
JavaFX是一个用于创建和交付桌面应用程序以及可在各种设备上运行的富Internet应用程序的软件平台。 JavaFX旨在取代Swing作为Java SE的标准GUI库,但是在可预见的将来,两者都将包括在内。 JavaFX支持Microsoft Windows,Linux和macOS上的台式计算机和Web浏览器。
由于程序代码库的增加,软件测试变得越来越流行。 编写尽可能多的测试并覆盖程序的所有功能至关重要。 测试可以分为两大类:单元测试和自动化测试。
Java有其自己的单元测试库JUnit库。 单元可以是函数,类,包或子系统。 因此,术语“单元测试”指的是测试代码中如此小的单元,以确保它们按预期工作的实践。 有关JUnit的更多信息,请阅读以下内容:
使用自动化测试,开发人员(或测试人员)编写脚本以用于端到端自动化软件测试。 Selenium和Cucumber是Java最著名的自动化测试框架。 去看一下:
记录是指活动的记录。 日志记录是开发团队的常见问题。 几个框架简化并标准化了Java平台的日志记录过程。 Java最常用的日志记录框架是Log4j和Logback 。 由于Log4j项目的支持终止,因此Logback旨在作为Log4j项目的后继产品。 Apache Log4j2是Log4j的升级,它对Log4j进行了重大改进,并提供了Logback中可用的许多改进,同时解决了Logback体系结构中的一些固有问题。
Logback是Java社区中使用最广泛的日志框架之一。 它提供了比Log4j更快的实现,提供了更多的配置选项,并且在归档旧日志文件方面具有更大的灵活性。
Log4j2是流行且有影响力的Log4j库的更新版本,该库是一个简单,灵活且快速的基于Java的日志记录框架。 它是线程安全的,并支持国际化。
为了在面试中证明您作为Java开发人员的技能,您将被问到许多与Core Java,多线程,OOP,Collections,Spring Framework,SQL有关的问题。 采访中提出的最重要问题的摘要:
在这篇文章中,我们看了学习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