Scala 是一门强类型语言,提供了丰富的数据类型支持。Scala 的类型系统既支持基本数据类型,也支持引用类型。类型推断使得开发者在大多数情况下无需显式声明类型,但 Scala 仍然允许开发者根据需要明确指定数据类型。以下是 Scala 中常用的基本数据类型及其介绍。


📖 目录

  1. 数字类型
  2. 字符类型
  3. 布尔类型
  4. 字符串类型
  5. 元组 (Tuple)
  6. 集合类型
  7. Option 类型
  8. 引用类型与对象
  9. 类型推断
  10. 参考资料

1. 数字类型

Scala 支持各种整数和浮点数类型。数字类型包括整数、长整数、浮点数等。

整数类型

  • Int:32 位有符号整数,范围从 -2^31 到 2^31-1。
  • Long:64 位有符号整数,范围从 -2^63 到 2^63-1。

示例:

val x: Int = 42
val y: Long = 123456789012345L

浮点数类型

  • Float:32 位浮点数,精度较低,范围为 ±3.4 × 10^38。
  • Double:64 位浮点数,精度较高,范围为 ±1.8 × 10^308。

示例:

val pi: Float = 3.14f
val e: Double = 2.718281828459045


2. 字符类型

Char 类型用于表示单个字符。它是一个 16 位的 Unicode 字符,可以表示任何字符。

示例:

val letter: Char = 'A'
val digit: Char = '9'


3. 布尔类型

Boolean 类型用于表示布尔值,它有两个可能的取值:truefalse

示例:

val isScalaFun: Boolean = true
val isJavaBetter: Boolean = false


4. 字符串类型

String 类型用于表示一串字符。Scala 中的字符串是不可变的,类似于其他编程语言中的字符串类型。

示例:

val greeting: String = "Hello, Scala!"
val name: String = "Alice"


5. 元组 (Tuple)

元组是一个可以包含不同类型元素的集合。在 Scala 中,元组的长度和元素类型可以不同。元组的类型根据元素数量和类型来定义。

定义元组

  • Tuple2:包含两个元素。
  • Tuple3:包含三个元素。
  • Tuple4:包含四个元素。

示例:

val tuple2: (String, Int) = ("Alice", 25)
val tuple3: (String, Int, Boolean) = ("Scala", 28, true)
val tuple4: (String, Int, Boolean, Double) = ("Java", 35, false, 10.5)

可以通过索引访问元组中的元素,例如:

val name = tuple2._1   // 获取 "Alice"
val age = tuple2._2    // 获取 25


6. 集合类型

Scala 提供了丰富的集合类型,包括 ListSetMapArray 等。

List

  • List 是一个有序、不可变的集合。

示例:

val fruits: List[String] = List("Apple", "Banana", "Orange")

Set

  • Set 是一个无序、不可重复的集合。

示例:

val numbers: Set[Int] = Set(1, 2, 3, 4)

Map

  • Map 是由键值对组成的集合。

示例:

val capitals: Map[String, String] = Map("USA" -> "Washington", "India" -> "New Delhi")

Array

  • Array 是一个固定大小的可变集合。

示例:

val nums: Array[Int] = Array(1, 2, 3, 4)


7. Option 类型

Scala 中的 Option 类型用于表示一个值可能存在也可能不存在。它有两个子类型:

  • Some:表示某个值的存在。
  • None:表示值的不存在。

示例

val someValue: Option[Int] = Some(42)
val noValue: Option[Int] = None

// 使用模式匹配来处理 Option 类型
someValue match {
  case Some(v) => println(s"Value is $v")
  case None => println("No value")
}


8. 引用类型与对象

Scala 中的引用类型包括类、对象、数组和函数等。引用类型实例化时,存储的是对象的引用。

对象

Scala 中的对象是单例对象,使用 object 关键字来定义。

示例:

object Singleton {
  def greet(): Unit = {
    println("Hello from Singleton!")
  }
}
Singleton.greet()  // 输出:Hello from Singleton!

类与实例

定义类并创建实例:

示例:

class Person(val name: String, val age: Int)

val person = new Person("Alice", 30)
println(person.name)  // 输出:Alice


9. 类型推断

Scala 具有强大的类型推断功能,通常情况下编译器可以根据值自动推断出类型,因此不需要显式声明类型。

示例

val x = 10    // 编译器自动推断 x 为 Int 类型
val name = "Scala"  // 编译器自动推断 name 为 String 类型

如果需要明确指定类型,可以使用显式的类型注解。

显式类型注解

val x: Int = 10
val name: String = "Scala"


10. 参考资料


Scala 的数据类型系统提供了丰富的选择,可以根据不同的需求选择合适的数据类型。强大的类型推断和不可变数据结构使得 Scala 在函数式编程中更加灵活和高效。