Scala 是一门强类型语言,提供了丰富的数据类型支持。Scala 的类型系统既支持基本数据类型,也支持引用类型。类型推断使得开发者在大多数情况下无需显式声明类型,但 Scala 仍然允许开发者根据需要明确指定数据类型。以下是 Scala 中常用的基本数据类型及其介绍。
📖 目录
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 类型用于表示布尔值,它有两个可能的取值:true
和 false
。
示例:
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 提供了丰富的集合类型,包括 List、Set、Map、Array 等。
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 在函数式编程中更加灵活和高效。
发表回复