- Scala編程實戰(原書第2版)
- (美)阿爾文·亞歷山大
- 567字
- 2024-04-15 12:05:20
第3章 數值和日期
本章涵蓋了Scala中的數值類型,以及Java 8引入的日期和時間API的使用方法。
在Scala中,Byte、Short、Int、Long和Char類型被稱為整數類型,因為它們由整數或數字表示。整數類型以及Double和Float組成了Scala中的數值類型。與被稱為“非數值類型”的Unit和Boolean一樣,這些數值類型都繼承AnyVal特質(trait)。在Scala頁面(https://oreil.ly/C7Id7)關于統一類型的討論中,這9種類型都被稱為預定義值類型,并且不能為空。
預定義值類型與AnyVal和Any(以及Nothing)的關系如圖3-1所示,其中:

圖3-1:所有預定義的數值類型都繼承自AnyVal
·所有的數值類型都繼承自AnyVal。
·Scala類層次結構中的所有其他類型都繼承自AnyRef。
如表3-1所示,Scala的數值類型與Java中對應的基本類型有著相同的數值范圍。
表3-1:Scala中數值類型的數值范圍

除此之外,Boolean可以為true或者false。
如果你想知道數據范圍的精確值,但手頭沒有這本書,可以在Scala REPL中查看:

除了這些基本的數值類型之外,BigInt和BigDecimal在本章后續部分都會講到。
數值常量中的下劃線
Scala 2.13中引入了在數值常量中使用下劃線的功能:


帶下劃線的數值常量可以在任何常用的地方使用:

目前有一個地方不能使用帶下劃線的數值常量,就是當把String轉換為數值類型時:

復數
除了Scala自帶的math類庫,如果你需要其他更強大的數學運算能力,可以了解一下Spire項目(https://typelevel.org/spire),它包含了Rational、Complex和Real等更多的數學概念。
日期和時間
本章最后幾節將介紹Java 8引入的日期和時間API,并展示如何使用LocalDate、LocalTime、LocalDateTime、Instant和ZonedDateTime等新類。
- JBoss Weld CDI for Java Platform
- Mastering LibGDX Game Development
- PHP+MySQL網站開發項目式教程
- Learning Apache Cassandra
- 動手學數據結構與算法
- Processing創意編程指南
- JavaScript動態網頁編程
- 黑莓(BlackBerry)開發從入門到精通
- 數據結構:Python語言描述
- C語言程序設計與應用實驗指導書(第2版)
- 安卓工程師教你玩轉Android
- 用Go語言自制編譯器
- Distributed Computing with Python
- Unity與C++網絡游戲開發實戰:基于VR、AI與分布式架構
- 新手學Visual C