Java中代數 – cguntur

發表於2021-01-14

代數–一個經常與學校數學聯絡在一起的術語,通常被理解為數學的一個分支,涉及符號和操作此類符號的規則。符號通常表示沒有固定值(稱為變數)的數量。

在程式語言中,它具有相似的含義。代數資料型別是包含變數的組合。組合也可以進一步包含其他型別作為變數。遞迴型別可以包含自身的另一個例項作為變數。代數是指通過代數運算建立代數資料型別的屬性。

 

代數學習

總和型別

總和型別:

  • 表示交替(對於三個值A,B,C→A或B或C,但不包含任何組合或其他子集)。
  • 定義變體
  • 如果是邏輯OR運算子,則只能使用其中一種。

產品種類

產品型別:

  • 表示組合(對於三個值A,B,C→A和B和C,可能會保持一個或多個為空)。
  • 持有價值
  • 是邏輯AND運算子

模式匹配

模式匹配是檢查令牌的給定序列是否存在某些模式的組成部分。本場比賽必須是精確的無歧義,所以必須評估到任何匹配或不匹配。

 

Java中的代數

總和型別

  • 列舉

列舉(enum)是一種特殊的總和型別。列舉一旦例項化,便無法與之關聯其他資料。

列舉可以具有可以通過建構函式設定的最終屬性,並且可以定義可以訪問此類最終屬性的方法。

一個enum可以宣告它必須隨後通過每個變體來實現抽象方法。同樣,enum可以實現一個介面,但是每個變體都必須實現這樣的介面。

一個enum可以被例項化或經由一個靜態方法分配Enum.valueOf(String)。在valueOf()接受一個String例項和它匹配的宣告列舉變數。

  • Optional

ava.util.Optional允許兩個變體。可選包含指定泛型的值或為空。

Optional正確使用,可以防止恐懼NullPointerException。

另外,Optional保證物件的使用者將始終接收物件,並且可以對所包含的非空值(如果存在)進行處理或處理缺少的值。

  • 密封型別

Java以前要麼是final封閉,要麼non-final(開放,抽象),就繼承而言,這是兩個極端。在最近引入sealed型別之前,將繼承和擴充套件限制為有限的集合並不容易。密封型別是Java 15中引入的。

 

產品種類

常規Java POJO(普通舊Java物件)類被視為產品型別。它是一個組合,允許將屬性組合在一起。

  • 元組

一個特殊的POJO類,擴充套件了類提供的內容。Java中目前不包括元組,除了在例項上迭代時可用的短暫Map.Entry(API)之外Map。元組可以包括單元,成對,孿生,三元組等。使用集合時,元組非常有用。

  • 記錄

record是Java 14中引入的不可變資料物件。

 

相關文章