JavaRush /Java 博客 /Random-ZH /喝咖啡休息#114。Java 中的默认构造函数是类构造函数的一个示例。Maven 与 Gradle:如何选择正确的...

喝咖啡休息#114。Java 中的默认构造函数是类构造函数的一个示例。Maven 与 Gradle:如何选择正确的构建工具

已在 Random-ZH 群组中发布

Java 中的默认构造函数 - 类构造函数的示例

来源:FreeCodeCamp 在本文中,我们将讨论构造函数、如何创建它们以及 Java 中的默认构造函数是什么。 喝咖啡休息#114。 Java 中的默认构造函数是类构造函数的一个示例。 Maven 与 Gradle:如何选择正确的构建工具 - 1

什么是构造函数?

作为基于类的面向对象编程术语,构造函数是用于初始化新创建的对象(类)的独特方法。创建构造函数时应遵循几条规则。这些规则包括:
  • 构造函数名称必须与类名称匹配。
  • 构造函数不得有返回类型。
在继续之前,让我们看看 Java 中的类是什么样子的:
public class Student {
  String firstName;
  String lastName;
  int age;
}
上面的代码显示了一个具有三个属性的Student类——firstNamelastNameage。我们假设该班级应该是学生注册的模型。回想一下,这三个属性没有任何值,因此其中的信息不是硬编码的。现在我们将使用构造函数来创建Student对象的新实例:
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор Student
  public Student(){
      firstName = "Ihechikara";
      lastName = "Abba";
      age = 100;
  }

  public static void main(String args[]) {
      Student myStudent = new Student();
      System.out.println(myStudent.age);
      // 100
  }
}
我们创建了一个构造函数,用于初始化Student对象中定义的属性。上面的代码是无参构造函数的示例。现在让我们看一个不同类型的例子:
public class Student {
  String firstName;
  String lastName;
  int age;

  //конструктор
  public Student(String firstName, String lastName, int age){
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
  }

  public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }

}
现在我们已经创建了一个参数化构造函数。参数化构造函数是使用参数/参数创建的构造函数。现在让我们改变它。
public Student(String firstName, String lastName, int age){

  }
我们创建了一个新的构造函数,它接受三个参数 - 两个字符串和一个整数。
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
然后,我们将这些参数与我们在创建类时定义的属性相关联。现在我们已经使用构造函数 初始化了Student对象。
public static void main(String args[]) {
    Student myStudent = new Student("Ihechikara", "Abba", 100);
    System.out.println(myStudent.age);
  }
最后,我们创建了Student对象 的一个​​新实例并将参数传递给它。我们能够做到这一点是因为我们已经在构造函数中定义了它们。我创建了一个带有三个参数的构造函数,但您也可以创建单独的构造函数来初始化每个属性。现在您已经了解了 Java 中的构造函数以及如何使用它,让我们看看默认构造函数。

默认构造函数是什么?

如果我们没有为类定义任何构造函数,则默认构造函数是编译器生成的构造函数。这是一个例子:
public class Student {
  String firstName;
  String lastName;
  int age;

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
你能找出这个例子和前面两个例子的区别吗?请注意,在创建之前,我们没有定义myStudent构造函数来初始化类中创建的属性。这不会在我们的路径中引发错误。更准确地说,编译器将创建一个空的构造函数,但您不会在代码中的任何位置看到该构造函数 - 它发生在“幕后”。当编译器开始执行其工作时,上面的代码将如下所示:
public class Student {
  String firstName;
  String lastName;
  int age;


  /* пустой конструктор, созданный компилятором. Этот конструктор не будет отображаться в вашем codeе*/
  Student() {

  }

  public static void main(String args[]) {
      Student myStudent = new Student();

      myStudent.firstName = "Ihechikara";
      myStudent.lastName = "Abba";
      myStudent.age = 100;

      System.out.println(myStudent.age);
      //100

      System.out.println(myStudent.firstName);
      //Ihechikara
  }
}
许多人将默认构造函数与无参构造函数混淆,但在 Java 中它们不是同一回事。程序员创建的任何构造函数都不被视为 Java 中的默认构造函数。

结论

在本文中,我们了解了构造函数是什么以及如何创建和使用它们来初始化对象。我们还讨论了默认构造函数以及它们与无参构造函数的区别。快乐编码!

Maven 与 Gradle:如何选择正确的构建工具

来源:Hackernoon 构建自动化是软件开发的一个重要方面。在本文中,我们将比较两种最流行的 Java 开发构建工具:MavenGradle喝咖啡休息#114。 Java 中的默认构造函数是类构造函数的一个示例。 Maven 与 Gradle:如何选择正确的构建工具 - 2

Make 和 Apache Ant

以前,开发人员使用Make工具创建Java项目,构建过程与使用任何其他语言创建应用程序没有太大区别。但在 2000 年,Ant(Another Neat Tool)构建系统发布了。Ant 与 Make 一样,使用命令式风格,其构建脚本具有 XML 语法。Ant 被设计为 Java 项目的构建自动化系统。因此,Java开发人员可以轻松地扩展其功能。

梅文

2004年,新的Maven构建系统问世,改变了构建Java应用程序的过程。以前,开发人员自己组织一个文件夹结构来存储源代码、资源、类路径目录和输出目录。因此,两个不同应用程序的 Ant 构建脚本可能会有很大不同:编译、汇编、将文件复制到输出目录等都是单独编写的。在 Maven 中,Java 项目总是具有清晰的结构。例如,源应该位于 src/main/java 中,测试资源应该位于 src/test/resources 中。Maven 允许您使用单个命令创建典型项目的文件结构。Maven 还引入了具有顺序阶段的“构建生命周期”的概念: 验证➞编译➞测试➞打包➞验证➞安装➞部署) 现在,由于固定结构文件夹和一组目标,无需编写和部署维护一个大型构建脚本 - 它们已变得声明性。开发人员不仅可以更方便地使用自己的代码,还可以更方便地使用第三方项目,因为源代码如何工作以及如何组装它很清楚。Java 世界中有相当多的库,大型应用程序使用数百个库。如果您使用 Ant,请记住您必须自己将必要的 jar 文件添加到项目中。您还需要处理必要的传递依赖关系。Maven 通过 Maven 中央存储库提供依赖项管理器功能。现在,当在构建脚本中指定新的依赖项时,Maven 将自动查找相应版本所需的 jar 及其所有传递依赖项,下载它们并确保它们最终位于项目的类路径中。您还可以维护自己的私有存储库,在其中可以存储您自己的或修补的库,或者手动创建的标准库。应该注意的是,Ant 可以与Apache Ivy 项目结合使用,它还允许您管理依赖项并使用 Maven 存储库。尽管 Maven 具有所有优点,但其声明式方法在某些情况下可能是一个缺点。例如,当您需要更改构建生命周期并向构建过程添加新目标时。Maven 功能可以使用插件进行扩展。有许多现成的 Maven 插件可以解决不同的问题,所有这些插件也可以从 Maven 中央存储库中获取。但如果由于某种原因你需要稍微改变标准生命周期,并且没有合适的插件,开发人员将不得不自己创建它。

摇篮

Gradle 构建系统的第一个版本于 2008 年发布。4年后,1.0版本发布。Gradle项目的目标是保留Maven的所有优点,但同时增加定制构建过程的能力。Gradle 构建脚本是用 Groovy DSL 编写的。Gradle 允许您编写声明性构建脚本,并且比 Maven 更紧凑,因为 XML 相当庞大。您可以轻松地将自定义逻辑添加到 Gradle 构建过程中。您只需编写 Groovy 脚本即可,无需开发插件。开发人员可以轻松调试构建脚本的执行,因为它们是常规的 Groovy 文件。因此,Gradle 结合了声明式和命令式方法。Gradle 还支持插件,允许开发人员更改设置。Gradle 的显着优势之一是增量构建。当构建重新启动时,Gradle 会确定目标的输入文件是否已更改,如果没有更改,则跳过目标的执行,因为其输出工件已经构建。与 Maven 相比,这显着提高了构建速度,尤其是在大型多模块项目中。Gradle 还可以运行 Gradle 守护进程,这是一个后台进程,可以避免每次运行构建时浪费资源和初始化时间。Gradle 有一个方便的 Gradle 包装器功能 - 能够生成 shell 和 Windows 命令脚本,自动下载指定版本的 Gradle 发行版并使用它来构建项目。这意味着要构建 Gradle 项目,不需要单独安装 Gradle,只需安装 Java 即可。如有必要,您可以轻松地将项目切换到不同版本的 Gradle。

在 Maven 和 Gradle 之间进行选择

尽管 Gradle 有很多好处,但仍有不少项目使用 Maven 构建系统。选择取决于项目和团队的类型。Maven 从 2004 年开始使用,因此更多的开发人员熟悉它。而且,Maven很稳定。最新的主要版本 3 于 2010 年发布。Gradle 已经发生了多次重大更改,没有向后兼容性,开发人员不得不将其构建脚本移植到新版本。由于并非每个人都熟悉 Groovy 或 Kotlin,因此使用 Gradle 需要额外的知识,而 Maven 使用清晰的 XML。这就提出了一个问题:如果项目在 Gradle 流行之前就开始开发,那么将构建脚本移至 Gradle 是否有意义?一方面,越来越多的开发者选择Gradle。例如,Spring、Hibernate 和 LinkedIn 使用 Gradle。Android 构建系统也是 Gradle,它在 Android 应用程序开发人员中普遍流行。另一方面,所有知名的 IDE 都与构建系统集成,并在编辑构建脚本时支持自动完成。与 Maven 一样,Gradle 拥有大量插件,允许您将常用功能添加到项目构建过程中。

结论

从上述每种装配系统的优缺点,可以得出以下结论。Maven 更适合不需要定制构建过程的小型项目,并且项目构建时间不是那么重要。Gradle更适合具有大量模块的大型项目,以及Android应用程序。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION