JavaRush /Java Blog /Random-TW /喝咖啡休息#114。Java 中的預設建構函式是類別建構函式的一個範例。Maven 與 Gradle:如何選擇正確...

喝咖啡休息#114。Java 中的預設建構函式是類別建構函式的一個範例。Maven 與 Gradle:如何選擇正確的建置工具

在 Random-TW 群組發布

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