您的位置 首页 php

编程新手(二):Java最佳学习方式——主题式推进

d7278750a16242cf9600ce5c515518ce

最佳Java学习方式

.导引

学习 Java 既简单又有趣,无论您有什么背景。有了这本综合指南的帮助,您将可开始 Java 之旅,并拥有掌握基本概念的所有资源。

通过前面文章的介绍,理解了Java是——

  • Ø 面向对象的编程语言;
  • Ø 可移植而平台无关;
  • Ø 能够自动垃圾收集;
  • Ø 多线程并发开发;
  • Ø 强健而安全;
  • Ø 动态,高性能;
  • Ø 分布式和扩展等等……

Java 代码运行在 Java 虚拟机上,该虚拟机将 Java 代码转换为操作系统能够理解的语言。所有这些特性以及更多特性使 Java 依然是 2021 年(还将持续下去)的顶级编程语言之一。

Java很有魅力,对于新手或初学者,有没有最佳的学习方式呢?这就是本篇文章将要讨论的和表达的内容——这里主要是为初学者指明渐进式的Java学习核心基础点,这是针对性编程学习必备以及进阶的支持基本面。根据这个学习方式,就可把主题知识点连成体系化知识线,然后再根据需要来拓展关联技术面或深化体系知识“点”。

友情提醒:我虽然写了不少,但主要请关注小标题所说,以及最后的结论部分。具体的成长还得靠你自己!如果有学习需要或咨询,请给我留言或私信。

2. 最佳方式:主题式迭代学习

学习任何东西都没有捷径可走,Java 也是如此。如果你想掌握这门语言(相信我,这是值得的),你必须在你的系统上设置它并开始练习。下载()并安装 JDK(Java 开发工具包)和 JRE(Java 运行时环境)以及您熟悉的任何 IDE。

随着对Java技术的提高和实际工作的需要,将来IDE的选择,建议NetBeans、Eclipse、以及IntelliJ IDEA(高级版收费的)

那在我们进入核心概念之前,这里有一些你 应该永远记住 的事情——

  • l 永远不要从“学习 Java 有多难啊”的心态开始。始终要认为它必须是有保证的安全的,这也是为什么有这么多人学它的原因所在。
  • l 如果您不是程序员,请多加些耐心和坚持——毫无疑问,您会更上一层楼,到达你的期望之地。
  • l 考虑个真实的场景并列出你将如何实现它。例如,如果您想从大润华购买杂货,结账流程是什么?同样的方法,你会怎么做?如果您想到了设计/流程,您就一定会找到实现它并获得结果的方法。可以使用 Java 和 J2EE 构建成熟的 Web 应用程序。或者思考个简单的个人工作管理和跟着如何用程序实现?
  • l 有很多资源可用于学习 Java。如果您遇到困难,Java 社区非常重要且活跃,会为您提供帮助。
  • l IDE 会处理您的所有语法错误。所以,专注于核心功能,但也要熟悉语法。
  • l 阅读本文并遵循从简单程序开始,然后在其上添加功能以使其更复杂和更具交互性的方法。

现在我们有了积极的心态和学习的动力,那就来看看学习用 Java 编写高效代码所需的所有概念——

1)变量和数据类型

每天,我们都会遇到不同类型的数据。例如,您的司机的电话号码是一个整数,但他的名字是一个字符串(字符数组)。同样,他给您车辆加的汽油价格是浮点数(十进制小数)。 Java 可处理很多数据类型,比如:

 String driverName;int telephoneNo;float petrolPrice;boolean isRegular;  

Java 中的最佳实践之一是遵循正确的 命名约定 。上面的变量(driverName、telephone.etc…)和方法应该以小写开头,后面的单词以大写字母开头——driverName。同样,由于布尔数据类型返回 true 或 false,因此以 is、are、has 等开头的变量命名是一个好习惯……

将数据存储在变量中的好处是我们可以在代码的任何地方使用变量。使用变量的限制由其作用域定义,可以是局部的、静态的或全局的。

数据类型 char、int、float、boolean 和 double 被称为原始类型(也叫基本类型),Java对每一种类型都有对应的对象类。例如,int 有 Integer; boolean 有 Boolean 等等。一个字符串就是个String类型的对象。

那么,我们如何处理这些数据呢?我们要对其进行一些操作!

2)数据操作

编程是要处理数据的,数据有很多种的。例如,根据司机是否规范合格,可以给他一些奖励,或者根据他加的油量,我们可以知道他开了多少公里。类似代码可以这样表示:

 if (isRegular){salary += 200;}  

条件表达式 结果只能是布尔值(true或false)。如果我们比较两个字符串,例如if(driverName == “Chand”),则可使用比较运算符’==’,它不同于赋值运算符’=’。同样的,还有<、<=、> , >= 等等。

3)条件和循环

就像我们在上面看到的那样,“if”是一个条件判断,用于测试某些内容是否准确并相应地返回结果(true或false)。if通常与可以处理多种情况的 else if 和 else 语句结合使用。

 if(marks < 23)    grade = ‘F’;else if(marks > 23 && marks < 60)    grade = ‘D’;else    grade = ‘B’;  

请注意,&& 表示两个表达式都必须为true,if 判断检测才能成功。

还要记住的是代码执行中循环的相关应用:while和for。

4)函数/方法

我们编写的很多代码都可以分成代码块,以便应用程序的许多其它部分可以重用它们。系统的此类块称为函数/方法(基于OOP的叫法)。例如,grade可以是基于分数的函数。当系统被分成更小的函数时,它们看起来整洁、独立并且易于理解。函数是模块化的,可重复使用。

Java 中的函数名以小写开头,后面的单词首字母大写。例如,获取成绩的grades(float marks),返回字符的、 isRegular(String driverName)返回布尔值 等。

接下来就才是 Java 的真正强大——

5)面向对象编程

如果您想了解 OOPS 概念的详细信息,请观看我之前嵌入在本文中的上述视频。尽管如此,对于本文,您需要知道的是,在 OOPS 中,一切都被视为对象。铅笔是一个对象,汽车、植物、动物,甚至司机也是一个对象。

继续我们的司机示例,假设以下属性标识司机 – driverName、joinDate、isRegular、dateOfBirth 和 avgCustomerRating。

假设像优步这样的服务提供商会有很多这样的司机。每个司机都具有所有这些属性,这些属性将以其独特的值加以区分。这意味着,我们可用这些属性作为司机的成员变量来创建类“Driver”。每当我们需要获取或设置特定司机的详细信息时,我们将使用 new 运算符创建 Driver 类的“对象”。

 Driver driver = new Driver();  

在创建类时,我们还为成员创建了“getter 和 setter”方法,通过这些方法我们可以获取属性成员各个值。假如必须设置整个对象,我们可使用在类中定义的构造函数。如下所示:

 public Driver(String driverName, String joiningDate, boolean isRegular,String dateOfBirth, float avgCustomerRating){this.driverName = driverName;this.joiningDate = joiningDate;this.isRegular = isRegular;this.dateOfBirth = dateOfBirth;this.avgCustomerRating = avgCustomerRating;}  

现在,当想创建这样一个对象时,就可以通过调用 new 操作符和这个构造函数来实现:

 Driver driver1 = new Driver(“John”, “21/12/2018”, true, “12-01-1983”, 4.5);  

如果您正在同时练习代码,则在修复编译错误(如果有)之后,就可构建并运行程序,然后还可继续扩展项目。同时您也将看到与每个 .java 文件对应的 .class 文件。

6)数据结构和循环

在Java中,有许多如数组、列表、映射、树等的数据结构。所有这些都在 Collection 框架下,除了 Array,它是 java.util 包的一部分。理解和掌握 Collection 将使您对存储和检索数据感到非常爽——这意味着您学习成功了一半。来用数组做一个简单的例子。在我的“ 何为Java… ” ()中,用 ArrayList 进行了类似的操作,可去看看。

 Driver[] drivers = new Driver[5];  

//为每个司机设置详细信息或从数据库或用户输入中获取它

假设有五个司机,我们想根据每个司机的一些条件设置工资。为此,我们使用“for”循环。

 for(int i=0; i<5; i++){if(driver[i].isRegular && driver[i].salary < 4000)driver[i].salary += 200;}  

请注意,我们获取每个司机的详细信息,然后对每个司机进行一些检查。之后,我们设置一个值。在这里,我们将 Driver 的硬编码为 5个,但在实际应用程序中,我们将从数据库或控制台获取它。

那又该如何操作呢?请继续……

7)用户输入

考虑从用户那里获取司机详细信息。对于每个数据,使用刚刚学习的 for 循环处理更多信息。首先,让我们创建数组。这次我们不设定长度,而是向用户询问要多少。

如果还没有创建 Driver 类,现在使用您的 IDE 来创建(我这里用的是NetBeans)。这些东西最好在实践中学习。要创建这个类,让我们首先在 IDE 上创建一个项目。创建一个任何名称的项目,例如 myLearning。然后创建一个名为 com.learning 的包(意思是源代码)。在包内,使用成员创建类 Driver。只需单击几个按钮,即可在 IDE 上生成 getter 和 setter。

d5f2cdde48a842e9aaf6f1fde09917be

创建包com.learning,完成后:

9cd190c8c412415a90d3d674bc7a18aa

创建Driver类

在此类中编写或创建我们之前讨论过的 构造函数

接着可以创建Test类,此类拥有 public static void primary (String args[]) 方法以用于测试之用。

要从用户那里获得输入,最好的方式是使用“Scanner”方法。

之后,我们可以使用Scanner的 next() 方法来一一获取输入。我们第一件事是要知道存储司机数量的信息。然后,我们创建一个相同长度的数组,循环遍历它,实例化循环内的每个对象,并使用构造函数或 setter 方法设置类成员的值。

8)连接数据库

为了让我们的 java 代码连接到数据库,我们需要一个 JDBC 驱动程序。不同的数据库有不同的驱动;例如,对于 MySQL,驱动程序将是 com.mysql.jdbc.Driver。接下来,我们需要连接到数据库所在的 URL(位置)。为了访问数据库,我们还需要用户名和密码。获取连接后,我们可以通过代码执行查询以获取或设置必要的详细信息。

对于任何简单或复杂的 Web 应用程序,都必须了解 JDBC(Java 数据库连接)——这一点要在学习的过程中牢记。

9)文件处理

Java 中的文件处理是使用两个类 FileWriter 和 FileReader 完成的。 Java 文档描述了这些类提供的所有方法和构造函数,它们非常简单。之前使用了 FileInputStream 和 FileOutputStream,但前两者更可取,因为它们写入字符流,而后两个是字节流类。请记住,对于文件处理,必须捕获像 FileNotFoundException 这样的异常。

当然,随着技能的提高,实际学习和应用中,还有更多的IO相关的操作API需要深入研究的。

10)异常处理

Java 拥有很大的灵活性。但是作为开发人员需要知道:我们的代码在哪些情况下会给出错误的结果。一种这样的情况是用户没有输入正确的值。比如你把driverName设置为String,用户引入了一些数字或者随机字符,这样的情况我们应该可以处理并通知用户。这些通常在客户端使用 JavaScript 完成相关校验,但客户端也可以禁用 JavaScript。作为开发人员,我们也需要从我们这边(后台)完成此验证。一些标准的异常如:

  • ü NullPointerException,当试图对空对象进行一些操作时会报出。
  • ü NumberFormatException:当尝试将字符串转换为数字时,它是无效数字格式串。
  • ü ArrayIndexOutOfBoundsException:当试图访问大于列表大小的元素时。
  • ……

Java 中有许多此类受检查异常和非受检异常,您需要注意这些异常才能获得健壮的代码。

11)垃圾收集

虽然我们总是厌恶垃圾,但 Java GC 会是您喜欢的东西。作为程序员,您不必担心垃圾收集器线程的工作方式。它只是安静地完成它的工作。但是,如果您有兴趣,你要好好研究一下,因为在一些核心 Java 面试中会被问到。

12)多线程

为了处理并发,Java 支持多线程并具有高效的内置方法。虽然许多人认为线程是一个可怕的话题,但在 Java 中却并非如此,使用起来非常方便。线程的行为有时会有所不同,就如人们都会有某个时候情绪波动一样,没啥大惊小怪的?只要处理得当,线程总是像处于最佳状态。

例如,您正在某地某事尝试预订出租车,总会有很多用户尝试从相同的起点寻找相同的出租车——这里出现的多个人就像运行的多线程一样。

那当这样时,谁获得预订确认呢?

第一个被确认的人!如果您快速预订了,则车子为您锁定——其他打车人不会看到这辆特定的出租车。但是,如果您出于某种原因取消叫车,则会解除锁定,此车又可供其他人预定使用。线程也是如此。如果一个线程正在更改其他人想要访问的代码的一部分,则其他线程必须等待轮到它们,以便所有线程不会同时处理相同的数据并破坏它。多线程让我们的生活变得轻松——想想在线票务、银行交易和所有安全交易——如果每个人都可以同时访问相同的数据,那世界将肯定充满混乱!

13)创建Web应用

好的,现在我们来到了真正的地方!学习 Java 的全部意义在于创建可交互且快速的强大 Web 应用程序。如果您已经安装了 IDE,那么您需要做的就是将 Jakarta EE(以前叫J2EE) 组件安装到您的 IDE 中。前面的掌握后,就要开始学习如何构建可扩展且健壮的 Web 应用程序了。

要构建 Web 应用程序,需要了解 servlet 和 JSP(Java 服务器页面)的基础知识,它们很容易学习。还有许多其他框架,如 Spring、Struts,等等,它们在与 Java 结合时提供了强大的 Web 应用程序支持。这个我们可以选择不同的相关教程来进一步学习。

14)创建web服务

Java Web 服务用于与 MVC 架构的不同层进行交互。 Java Web 服务 (JWS) 应用程序有两种通信方式——SOAP 和 RESTful 服务——这个通信是通过 WSDL(Web 服务描述语言)完成的。在学习到这一步后,可以找些关于 SOAP 和 REST 的内容丰富的教程,然后开始使用 Java Web 服务。

web服务,这个是走向微服务的热门抓手,请一定顺溜地学到这里,那说明你的技术已经可以独当一面了 ^_^

3.结论

在本文中,我谈论了掌握 Java 所需了解的各种 子主题的摘要。 Java 还使用了许多其他 OOPS 概念——例如 装箱、拆箱、设计模式、泛型 等,可以帮助您来更好地进行编码实践,帮助您构建功能性应用程序。你还可通过做些面试题来检验你是否能回答这些 Java 面试问题来,以确保你的理解是正确的!

通过上面的Java编程的子主题,作为初学者在具体学习时就有了更清晰的进阶路线,即可快速打通知识点,由可针对性深挖“主题”知识。

为了这些子主题有落脚点,最后这里给出了一个Java学习的初级入门和高级进阶的书籍列表,基于我们谈到的这些循序渐进的学习主题,这些书籍将使你学习 Java 拥有更愉快而彻底的体验。

这些书籍是(都有对应的中文版):

  • 1. Core Java Volume I – Fundamentals
  • 2. Effective Java
  • 3. Java: A Beginner’s Guide
  • 4. Java – The Complete Reference
  • 5. Head First Java
  • 6. Java Concurrency in Practice
  • 7. Test-Driven: TDD and Acceptance TDD for Java Developers
  • 8. Head First Object-Oriented Analysis Design
  • 9. Java Performance: The Definite Guide
  • 10. Head First Design Patterns
  • 11. Clean Code – A Handbook of Agile Software Craftsmanship

除此之外,还……你先把上面的搞定再说吧。

文章来源:智云一二三科技

文章标题:编程新手(二):Java最佳学习方式——主题式推进

文章地址:https://www.zhihuclub.com/42539.shtml

关于作者: 智云科技

热门文章

网站地图