SCALA:结构体系

Scala:数据结构

    Scala 类型体系
    Scala 数据类型详解
        1.Numeric types:byte/short/int/long/float/double

Scala 类型体系

SCALA:结构体系_第1张图片
代码:
1.scala的根类是Any,

Any是scala所有类的父类,
Any下面有两个子类:AnyVal、AnyRef

2.AnyVal表示值类型,下面有四个大类:

Numeric types:数值类型
Boolean:布尔类型
Char:字符类型
Unit:空类型

3.AnyRef是所有引用类型的父型:

所有java中的引用类型都是AnyRef的子类。
同样,所有我们自定义的scala的类也是AnyRef的子类。

4.上图(scala类型体系)的底部还有两个类:

Null是所有引用类型最后一个子类
Nothing是所有scala类型的最后一个子类。既是AnyVal,也是AnyRef的最后一个子类

Scala 数据类型详解
1.Numeric types:byte/short/int/long/float/double

byte:只有 1 个字节

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
val a: Byte=10
println(a)
}
}

short:2 个字节

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
val a: Short=10
println(a)
}
}

int:4 个字节
long:8 个字节
float

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
val a: Float=10
println(a)
}
}

输出是带小数点的——

	a:Float=50.0
  • double

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
val a: Double=60.98765
println(a)
}
}

输出是带小数点的——

	a:Double=60.98765

⚠️低精度数值类型向高精度数值类型赋值时,不需要类型转换。
⚠️高精度数值类型向低精度数值类型赋值时,会报错——type mismatch。(后面可以做隐式转换)

代码:

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
var b: Short = 20
var d: Byte = b
println(d)
}
}

报错

Error:(8, 19) type mismatch;
found : Short
required: Byte
var d: Byte = b

2.Boolean:true/false

3.Char

⚠️字符类型用单引号

4.Unit

  • 往往作为函数的返回值出现
  • 往往表示函数是有副作用的,因为函数不反悔任何的值

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
var d: Unit=()
println(d)
}
}

输出:

	()

5.Null

  • Null 表示引用类型是空

6.Nothing

  • Nothing 表示程序异常终止。对于一个函数而言,如果其返回值是Nothing,表示它出现了异常。

7.String

scala中,构建于java的String之上,新增了字符串插值的特性

package com.leili.scala

object Demo2 {
def main(args: Array[String]): Unit = {
var name = “leili”
println(s"my name is ${name}")
}
}

输出:

my name is leili

你可能感兴趣的:(scala)